Redis
文章平均质量分 96
Redis相关知识讲解:包括但不限于Redis、Redisson、分布式锁、布隆过滤器、分布式缓存理论等
邋遢的流浪剑客
成长中的基础架构攻城狮
展开
-
Jedis源码解析(二):JedisCluster模块源码解析
三、JedisCluster模块源码解析1、JedisCluster类结构由于Jedis本身不是线程安全的,所以选择使用对象池JedisPool来保证线程安全在JedisClusterInfoCache中,保存了节点和槽位的一一对应关系,为每个节点建立一个对象JedisPool,并保存在map中。这个类主要用于保存集群的配置信息2、JedisCluster的初始化public class JedisCluster extends BinaryJedisCluster implements J原创 2021-09-05 15:57:13 · 3728 阅读 · 0 评论 -
Jedis源码解析(一):Jedis简介、Jedis模块源码解析
一、Jedis简介1、Jedis对应Redis的四种工作模式对应关系如下:Jedis主要模块Redis工作模式JedisRedis Standalone(单节点模式)JedisClusterRedis Cluster(集群模式)JedisSentinelRedis Sentinel(哨兵模式)ShardedJedisRedis Sharding(分片模式)2、Jedis三种请求模式Jedis实例有3种请求模式:Client、Pipeline和Tra原创 2021-09-04 20:21:26 · 3191 阅读 · 0 评论 -
Redis复习(二):Redis主从复制、哨兵与集群、分布式锁、布隆过滤器、缓存雪崩、缓存击穿、缓存穿透、常见的几种缓存模式
七、Redis主从复制在Redis中,用户可以通过执行SLAVEOF命令或者设置slaveof选项,让一个服务器去复制另一个服务器,我们称呼被复制的服务器为主服务器,而对主服务器进行复制的服务器则被称为从服务器1、同步和命令传播(旧版复制功能)Redis的复制功能分为同步和命令传播两个操作:同步操作用于将从服务器的数据库状态更新至主服务器当前所处的数据库状态命令传播操作则用于在主服务器...原创 2020-03-01 20:44:01 · 865 阅读 · 0 评论 -
Redis复习(一):Redis数据类型、底层数据结构、过期键删除策略、内存回收策略、RDB和AOF、Redis Pipeline、事务
一、Redis数据类型类型特性string(字符串)二进制安全的,可以包含任何数据,一个键最大能存储512Mlist(列表)双向链表,按照插入顺序排序,可以从链表两端进行push和pop操作hash(散列表)键值对集合,适合存储对象set(集合)元素不重复的无序集合zset(有序集合)将set中的元素增加一个权重参数score,元素按scor...原创 2020-02-23 19:47:42 · 883 阅读 · 1 评论 -
Google布隆过滤器与Redis布隆过滤器详解
一、什么是布隆过滤器?布隆过滤器可以用来判断一个元素是否在一个集合中。它的优势是只需要占用很小的内存空间以及有着高效的查询效率。对于布隆过滤器而言,它的本质是一个位数组:位数组就是数组的每个元素都只占用1bit ,并且每个元素只能是0或者1布隆过滤器除了一个位数组,还有 K 个哈希函数。当一个元素加入布隆过滤器中的时候,会进行如下操作:使用K个哈希函数对元素值进行K次计算,得到K个哈希值...原创 2019-06-26 20:16:48 · 3526 阅读 · 5 评论 -
一致性哈希算法
1、基本概念一致性哈希算法将整个哈希值空间组织成一个虚拟的圆环,如假设某Hash函数的值空间为0−232−10-2^{32}-10−232−1(即哈希值是一个32位无符号整数),整个哈希空间如下:整个空间按顺时针方向组织。0和232−12^{32}-1232−1在零点中方向重合下一步将各个服务器使用进行Hash运算,具体可以选择服务器的ip或者主机名作为关键字进行哈希,这样每台机器就能确定...原创 2019-04-29 20:01:58 · 480 阅读 · 0 评论 -
Redis详解:RDB持久化和AOF持久化
一、RDB持久化RDB是Redis默认的持久化方案。在指定的时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中,即在指定目录下生成一个dump.rdb文件,Redis重启会通过加载dump.rdb文件恢复数据RDB持久化既可以手动执行,也可以根据服务器配置选项定期执行,该功能可以将某个时间点上的数据库状态保存到一个RDB文件中RDB持久化功能所生成的RDB文件是一个经过压缩的...原创 2019-04-21 14:08:29 · 956 阅读 · 0 评论 -
Redis详解:Redis事务
Redis通过MULTI、EXEC、WATCH等命令来实现事务功能。事务提供了一种将多个命令请求打包,然后一次性、按顺序地执行多个命令的机制,并且在事务执行期间,服务器不会中断事务而改去执行其他客户端的命令请求,它会将事务中的所有命令都执行完毕,然后才去处理其他客户端的命令请求127.0.0.1:6379> MULTIOK127.0.0.1:6379> SET name tom...原创 2019-04-21 10:42:26 · 584 阅读 · 0 评论 -
Redis详解:Redis过期键删除策略
一、三种过期键删除策略定时删除:在设置键的过期时间的同时,创建一个定时器,让定时器在键的过期时间来临时,立即执行对键的删除操作惰性删除:放任键过期不管,但是每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除该键;如果没有过期,就返回该键定期删除: 每隔一段时间,程序就对数据库进行一次检查,删除里面的过期键。至于要删除多个过期键,以及要检查多少个数据库,则由算法决定第一...原创 2019-04-20 15:41:27 · 8255 阅读 · 1 评论 -
Redis详解:Redis对象
Redis包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象Redis的对象系统实现了基于引用计数技术的内存回收机制,当程序不再使用某个对象的时候,这个对象所占用的内存就会被自动释放,还通过引用计数技术实现了对象共享机制,这一机制可以在适当的条件下,通过让多个数据库键共享同一个对象来节约内存Redis的对象带有访问时间记录信息,该信息可以用于计算数据库建的空转时长,在服...原创 2019-04-20 11:15:41 · 386 阅读 · 0 评论 -
Redis详解:Redis底层数据结构(下)
Redis底层数据结构(上):https://blog.csdn.net/qq_40378034/article/details/89295462四、跳跃表跳跃表是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的跳跃表支持平均O(logN)O(logN)O(logN)、最坏O(N)复杂度的节点查找,还可以通过顺序性操作来批量处理节点Redis使用跳...原创 2019-04-14 23:02:19 · 4433 阅读 · 0 评论 -
Redis详解:Redis底层数据结构(上)
前言Redis 数据库里面的每个键值对(key-value)都是由对象(object)组成的:数据库键总是一个字符串对象数据库的值则可以是字符串对象、列表对象、哈希对象、集合对象、有序集合对象这五种对象中的其中一种这篇博客要讨论的主要是这五种对象所使用的底层数据结构Redis底层数据结构有以下数据类型:简单动态字符串链表字典跳跃表整数集合压缩列表一、简单动态字符串Re...原创 2019-04-14 13:21:59 · 3449 阅读 · 0 评论 -
Redisson:Redis官方提供的构建分布式锁的轮子
使用SpringBoot整合Redisson一、引入依赖 <dependency> <groupId>org.redisson</groupId> <artifactId>redisson-spring-boot-starter</artifactId> ...原创 2019-04-13 11:05:14 · 835 阅读 · 0 评论 -
Redis实现分布式锁
使用Jedis实现Redis客户端,且只考虑Redis服务端单机部署的场景一、可靠性为了确保分布式锁可用,锁的实现至少要同时满足以下三个条件:互斥性。在任意时刻,只有一个客户端能持有锁不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。加锁和解锁必须是同一个客户端,客户端自己不能把别人加的锁给解了。二、依赖和配置信息1)、引入依赖 ...原创 2019-04-10 16:08:21 · 802 阅读 · 0 评论 -
Redis详解:Redis集群
Redis集群是Redis提供的分布式数据库方案,集群通过分片来进行数据共享,并提供复制和故障转移功能一、节点一个Redis集群通常由多个节点组成,连接各个节点的工作可以使用CLUSTER MEET命令来完成,该命令的格式如下:CLUSTER MEET <ip> <port>1)、启动节点Redis服务器在启动时会根据cluster-enabled配置选项是否为y...原创 2019-04-06 14:35:52 · 588 阅读 · 0 评论 -
Redis详解:Redis哨兵
一、Redis Sentinel(哨兵)介绍Sentinel(哨兵)是Redis的高可用解决方案:由一个或多个Sentinel实例组成的Sentinel系统可以监视多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理命令请求上图中,server1为当前的主服...原创 2019-04-02 09:28:08 · 463 阅读 · 0 评论 -
Redis详解:Redis复制
在Redis中,用户可以通过执行SLAVEOF命令或者设置slaveof选项,让一个服务器去复制另一个服务器,我们称呼被复制的服务器为主服务器,而对主服务器进行复制的服务器则被称为从服务器进行复制中的主从服务器双方的数据库将保存相同的数据,概念上将这种现象称作数据库状态一致一、旧版复制功能Redis的复制功能分为同步和命令传播两个操作:同步操作用于将从服务器的数据库状态更新至主服务器当...原创 2019-03-31 11:26:09 · 433 阅读 · 0 评论 -
Redis缓存雪崩、缓存击穿、缓存穿透和常见的几种缓存模式
一、缓存雪崩1)、什么是缓存雪崩?如果缓存集中在一段时间内失效,发生大量的缓存穿透,所有的查询都落在数据库上,造成了缓存雪崩由于原有缓存失效,新缓存未到期间所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机2)、有什么解决方案来防止缓存雪崩?1)加锁排队mutex互斥锁解决,Redis的SETNX去set一个mutex key,当操作...原创 2019-03-09 14:58:05 · 1498 阅读 · 2 评论