![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
深入理解Redis系列
文章平均质量分 75
weixin_41186611
这个作者很懒,什么都没留下…
展开
-
深入理解Redis系列——发布与订阅详解
如果在调用B接口的发生异常,此时可能就导致下单支付接口返回失败,但是此时A接口其实已经调用成功,这就代表它内部已经处理下单支付成功的结果。如果就两个业务需要获取下单支付的结果,那也还好,程序改造也快。这样就会导致A,B,C三个下游接口,A获取成功获取支付结果,但是B,C没有拿到,导致三者系统数据不一致的情况。第一,下单支付业务与其他业务重度耦合,每当有个新业务需要支付结果,就需要改动下单支付的业务。后面如果又有新的业务,比如说积分服务,他需要获取下单支付的结果,然后增加用户的积分。...原创 2022-07-28 10:10:59 · 135 阅读 · 0 评论 -
深入理解Redis系列——集群详解
与此相反,ASK错误只是两个节点在迁移槽的过程中使用的一种临时措施在客户端收到关于槽i的ASK错误之后,客户端只会在接下来的一次命令请求中将关于槽i的命令请求发送至ASK错误所指示的节点,但这种转向不会对客户端今后发送关于槽i的命令请求产生任何影响,客户端仍然会将关于槽i的命令请求发送至目前负责处理槽i的节点,除非ASK错误再次出现。Redis3.0加入了Redis的集群模式,实现了数据的分布式存储,对数据进行分片,将不同的数据存储在不同的master节点上面,从而解决了海量数据的存储问题。...原创 2022-07-28 10:09:16 · 400 阅读 · 1 评论 -
深入理解Redis系列——Sentinel详解
比如当主服务器下线了,sentinel就会从主服务器的那些从服务器中选一个出来当作新的主服务器,然后发出命令让其他从服务器去复制这个新的主服务器,当原来的主服务器再次上线后,然后作为新主服务器的从服务器。哨兵模式,是由一个或者多个哨兵实例组成的哨兵系统,这个系统可以监视多个主服务器和从服务器,并在被监视的主服务器进入下线状态时,自动将某个从服务器升级为新的主服务器,然后由新的主服务器替代原来下线的主服务器继续工作。Sentinel启动后,会先根据配置文件去初始化监视的服务器结构,即masters字典。...原创 2022-07-28 10:08:30 · 586 阅读 · 0 评论 -
深入理解Redis系列——主从复制详解
是一个固定大小的先进先出的缓存队列,主服务器会把命令传播过程中的命令除了发给从服务器之外,也会写进这个队列,然后假如遇到了断线重连,就去复制积压缓冲区中查看这部分相差的数据是否还在其中,如果在,就执行部分重同步操作,如果不在,就执行完全重同步操作。同步是从服务器向主服务器发送sync命令,主服务器开始执行bgsave保存rdb文件,另外在保存期间新执行的写命令写在缓冲区中,然后将rdb文件和缓冲区的命令一同发给从服务器,让从服务器去执行。相差的数据保存在哪呢,其实主服务器维护着一个。...原创 2022-07-28 10:06:16 · 70 阅读 · 0 评论 -
深入理解Redis系列——持久化机制详解
AOF重写是在后台进行的,因为不想阻塞父服务器继续处理请求,所以创建了一个子进程去执行重写,子进程中有父进程数据库状态的拷贝,但子进程在重写过程中,可以父进程又有新的写命令使得数据库状态发生了改变,可能造成数据库状态和AOF文件的不一致问题,所以Redis服务器设置了一个AOF重写缓冲区,存放这一期间的写命令。有两个命令用于生成RDB文件,SAVE和BGSAVE,两者的不同点在于SAVE是将redis进程阻塞后进行保存,BGSAVE是创建出一个子进程完成RDB文件的保存,父进程可以继续处理请求命令。...原创 2022-07-27 18:06:36 · 116 阅读 · 0 评论 -
深入理解Redis系列——过期策略详解
Redis服务器保存着一个redisDb数组,数组的大小是数据库的数量,数组的大小默认为16,redis客户端可通过select命令选择对哪个数据库进行操作,具体实现是在服务器内部有一个redisClient结构中存储着redisDb的指针指向数组中一个具体的数据库,通过修改这个指针可以实现切换数据库。但它的缺点是如果当过期键比较多的时候,占用过多的cpu时间,而如果再这时候内存不是很紧张的时候,且大量的请求命令过来,让cpu去删除那些键无疑是不合适的。因为保存的时候会对所有的键进行检查。...原创 2022-07-27 18:05:19 · 425 阅读 · 0 评论 -
深入理解Redis系列——对象系统详解
Redis并没有直接使用底层数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这个系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象,每种对象都用到了至少一种我们前面所介绍的数据结构。通过这五种不同类型的对象,Redis可以在执行命令之前,根据对象的类型来判断一个对象是否可以执行给定的命令。使用对象的另一个好处是,我们可以针对不同的使用场景,为对象设置多种不同的数据结构实现,从而优化对象在不同场景下的使用效率。...原创 2022-07-27 18:03:04 · 110 阅读 · 0 评论 -
深入理解Redis系列——底层数据结构类型详解
现在我们建了很多级索引,最高级的索引,就两个元素0、5000,次高级索引四个元素0、2500、5000、7500,依次类推,当我们查找7890这个元素时,查找路径为0、5000、7500...7890,通过最高级索引直接跳过了5000个元素,次高层索引直接跳过了2500个元素,从而使得链表能够实现二分查找。zskipList中有指向表头和表尾的指针,一个level字段,记录了层数最多的节点的层数大小,相当于上面的例子中的索引级数,索引的高度,一个length字段,记录链表节点个数。...原创 2022-07-27 18:00:14 · 173 阅读 · 0 评论