Redisson - Redis官方推荐的分布式协调客服端
什么是RedissonRedisson是Redis官方推荐的一个高级的分布式协调Redis客服端, Redisson在基于NIO的Netty框架上,充分的利用了Redis键值数据库提供的一系列优势,在Java实用工具包中常用接口的基础上,为使用者提供了一系列具有分布式特性的常用工具类。使得原本作为协调单机多线程并发程序的工具包获得了协调分布式多机多线程并发系统的能力,大大降低了设计和研发大规模分布式系统的难度。同时结合各富特色的分布式服务,更进一步简化了分布式环境中程序相互之间的协作。 兼容 Redis 2.6+ and JDK 1.6+,使用Apache License 2.0授权协议. 官网:https://redisson.org/\Github:https://github.com/redisson/redisson 适用场景分布式应用,缓存,分布式会话,分布式任务/服务/延迟执行服务,Redis客户端等。 主要特性云Redis管理、多样Redis配置支持、丰富连接方式、分布式对象、分布式集合、分布式锁、分布式服务、多种序列化方式、三方框架整合、完...
Redis是什么?4大优势,必学中间件!
Redis是什么? 全称:REmote DIctionary Server Redis是一种key-value形式的NoSQL内存数据库,由ANSI C编写,遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 Redis最大的特性是它会将所有数据都放在内存中,所以读写速度性能非常好。当然,它也支持将内存中的数据以快照和日志的形式持久化到硬盘,这样即使在断电、机器故障等异常情况发生时数据也不会丢失,Redis能从硬盘中恢复快照数据到内存中。 官网:https://redis.io/\中文:http://www.redis.cn/\Github:https://github.com/antirez/redis Redis有什么优势?1、性能高,速度快 Redis命令执行速度非常快,官方给出的读写性能可以达到10W/秒。为什么会如此之快呢?有以下几个因素: 数据存储在内存中,直接与内存连接。 由相对底层的C语言实现,离操作系统更近。 实现源码很精湛,仅仅几万行代码,简单稳定。 使用了单线程模型,无多线程竞争、锁...
Spring Boot Redis Cluster 实战干货
添加配置信息spring.redis: database: 0 # Redis数据库索引(默认为0) #host: 192.168.1.8 #port: 6379 password: 123456 timeout: 10000 # 连接超时时间(毫秒) pool: max-active: 8 # 连接池最大连接数(使用负值表示没有限制) max-idle: 8 # 连接池中的最大空闲连接 max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制) min-idle: 0 # 连接池中的最小空闲连接 cluster: nodes: - 192.168.1.8:9001 - 192.168.1.8:9002 - 192.168.1.8:9003 只需要添加3个master节点,3个slave节点不需要添加。 你要做的也只有这些配置了,其他的spring boot都自动配置好了。 现在就可以像使用单机一样使用集群,redis会自动按key分片到不同的集群实例...
Spring Data Redis 详解及实战一文搞定
SDR - Spring Data Redis的简称。 Spring Data Redis提供了从Spring应用程序轻松配置和访问Redis的功能。它提供了与商店互动的低级别和高级别抽象,使用户免受基础设施问题的困扰。 Spring Boot 实战引用依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>${spring-boot.version}</version> </dependency> 添加redis配置类@EnableCaching @Configuration public class RedisConfig extends CachingConfigurerSupport { @...
一个致命的 Redis 命令,导致公司损失 400 万!!
最近安全事故濒发啊,前几天发生了《顺丰高级运维工程师的删库事件》,今天又看到了 PHP 工程师在线执行了 Redis 危险命令导致某公司损失 400 万。。 什么样的 Redis 命令会有如此威力,造成如此大的损失? 具体消息如下: 据云头条报道,某公司技术部发生 2 起本年度 PO 级特大事故,造成公司资金损失 400 万,原因如下: 由于 PHP 工程师直接操作上线 redis,执行 keys * wxdb(此处省略)cf8* 这样的命令,导致redis锁住,导致 CPU 飙升,引起所有支付链路卡住,等十几秒结束后,所有的请求流量全部挤压到了 rds 数据库中,使数据库产生了雪崩效应,发生了数据库宕机事件。 该公司表示,如再犯类似事故,将直接开除,并表示之后会逐步收回运维部各项权限。 看完这个消息后,我心又一惊,为什么这么低级的问题还在犯?为什么线上的危险命令没有被禁用?这事件报道出来真是觉得很低级。。。 且不说是哪家公司,发生这样的事故,不管是大公司还是小公司,我觉得都不应该,相关负责人应该引咎辞职!!! 对 Redis 稍微有点使用经验的人都知道线上是不能执行 key...
超详细的 Redis Cluster 官方集群搭建指南
今天从 0 开始搭建 Redis Cluster 官方集群,解决搭建过程中遇到的问题,超详细。 安装ruby环境因为官方提供的创建集群的工具是用ruby写的,需要ruby2.2.2+版本支持,ruby安装需要指定openssl。 安装openssl $ wget https://www.openssl.org/source/openssl-1.0.2m.tar.gz $ tar -zxvf openssl-1.0.2m.tar.gz $ cd openssl-1.0.2m $ ./config --prefix=/usr/local/openssl $ ./config -t $ make $ make install $ openssl version 安装ruby $ yum remove ruby $ wget https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.2....
75 道 BAJT 中高级 Java 面试题,你能答上几道?
整理了下 BATJ 关于 JAVA 的面试题目,大家参考下吧,希望对大家有所帮助,可以帮大家查漏不缺。答对这些面试题,PASS 掉 80 % 的求职竞争者。 75 道 BATJ 中高级 Java 面试题 hashcode相等两个类一定相等吗?equals呢?相反呢? 介绍一下集合框架? hashmap hastable 底层实现什么区别?hashtable和concurrenthashtable呢? hashmap和treemap什么区别?低层数据结构是什么? 线程池用过吗都有什么参数?底层如何实现的? sychnized和Lock什么区别?sychnize 什么情况情况是对象锁? 什么时候是全局锁为什么? ThreadLocal 是什么底层如何实现?写一个例子呗? volitile的工作原理? cas知道吗如何实现的? 请用至少四种写法写一个单例模式?小试牛刀,答对几道? 请介绍一下JVM内存模型??用过什么垃圾回收器都说说呗 线上发送频繁full gc如何处理? CPU 使用率过高怎么办? 如何定位...
Java 程序员必须掌握的常用 Linux 命令
Java程序员也是半个运维了,在日常开发中经常会接触到Linux环境操作。小公司的开发人员甚至是兼了全运维的工作,下面整理了一些常用的Linux操作命令。 Linux常用指令 ls 显示文件或目录 -l 列出文件详细信息l(list) -a 列出当前目录下所有文件及目录,包括隐藏的a(all) mkdir 创建目录 -p 创建目录,若无父目录,则创建p(parent) cd 切换目录 touch 创建空文件 vim / vi 创建/编辑文件 insert 编辑 :q 退出 :q! 强制退出 :wq 保存并退出 esc 退出编辑 echo 创建带有内容的文件 cat 查看文件内容 tar ...
分布式 Session 共享解决方案
Session是服务器用来保存用户操作的一系列会话信息,由Web容器进行管理。单机情况下,不存在Session共享的情况,分布式情况下,如果不进行Session共享会出现请求落到不同机器要重复登录的情况,一般来说解决Session共享有以下几种方案。 1、session复制 session复制是早期的企业级的使用比较多的一种服务器集群session管理机制。应用服务器开启web容器的session复制功能,在集群中的几台服务器之间同步session对象,使得每台服务器上都保存所有的session信息,这样任何一台宕机都不会导致session的数据丢失,服务器使用session时,直接从本地获取。 这种方式在应用集群达到数千台的时候,就会出现瓶颈,每台都需要备份session,出现内存不够用的情况。 2、session绑定 利用hash算法,比如nginx的ip_hash,使得同一个Ip的请求分发到同一台服务器上。 这种方式不符合对系统的高可用要求,因为一旦某台服务器宕机,那么该机器上的session也就不复存在了,用户请求切换到其他机器后么有session,无法完成业务处理。 3...
分布式 ID 生成器的解决方案总结
在互联网的业务系统中,涉及到各种各样的ID,如在支付系统中就会有支付ID、退款ID等。那一般生成ID都有哪些解决方案呢?特别是在复杂的分布式系统业务场景中,我们应该采用哪种适合自己的解决方案是十分重要的。下面我们一一来列举一下,不一定全部适合,这些解决方案仅供你参考,或许对你有用。 一个ID一般来说有下面几种要素: 唯一性:确保生成的ID是全网唯一的。 有序递增性:确保生成的ID是对于某个用户或者业务是按一定的数字有序递增的。 高可用性:确保任何时候都能正确的生成ID。 带时间:ID里面包含时间,一眼扫过去就知道哪天的交易。 系统时间毫秒数我们可以使用当前系统时间精确到毫秒数+业务属性+用户属性+随机数+…等参数组合形式来确保ID的唯一性,缺点是ID的有序性难以保证,要保证有序性就要依赖数据库或者其他中间存储媒介。 UUIDJava自带的生成UUID的方式就能生成一串唯一随机32位长度数据,而且够我们用N亿年,保证唯一性肯定是不用说的了,但缺点是它不包含时间、业务数据可读性太差了,而且也不能ID的有序递增。 这是一种简单的生成方式,简单,高效,但在一般业务系统中我还没见过有...
