
Redis
深入浅出Redis
零尘_oo
这个作者很懒,什么都没留下…
展开
-
Redis面试系列:Redis Cluster如何通信?客户端怎么知道数据位于哪个节点?滴滴三面问到你怀疑人生(五)
前言如何保证Redis的高并发和高可用?Redis的哨兵原理能介绍一下么?一、Sentinel(哨兵)模式Sentinel(哨兵)是Redis的高可用性(high availability)解决方案:由一个或多个Sentinel实例(instance)组成的Sentinel系统(system)可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理命令请求。原创 2020-05-13 23:36:17 · 2379 阅读 · 2 评论 -
Redis面试系列:过期策略和淘汰策略(五)
前言一开始总会把这两个问题搞混淆了。一句话简单解释一下:过期策略:已经过期的key删除方案。【定期删除和惰性过期】淘汰策略:内存不够用的时候的处理方案。【就是常说的LRU算法】一、过期策略redisDb结构的expires字典保存了数据库中所有键的过期时间,我们称这个字典为过期字典:过期字典的键是一个指针,这个指针指向键空间中的某个键对象(也即是某个数据库键)。过期字典的值是一个long long类型的整数,这个整数保存了键所指向的数据库键的过期时间——一个毫秒精度的UNIX时间戳。Re原创 2020-05-08 23:28:37 · 275 阅读 · 0 评论 -
Redis面试系列:聊一聊Redis的持久化和主从复制(四)
前言大家都可能会被问:Redis与Memcache的区别是什么?最容易记住的可能就是:Redis支持丰富的数据类型和Redis的持久化。Redis服务发生宕机后,在重启时还能进行数据恢复,这也是现在都使用Redis的原因吧。一、Redis持久化机制是什么?RDB持久化(默认)在Redis配置文件redis.conf默认配置了如下信息:#指定在多长时间内,有多少次更新操作,就将数据同步到...原创 2020-05-07 22:01:07 · 991 阅读 · 0 评论 -
Redis面试系列:跳跃表skiplist实现原理是什么?源码解析(三)
前言之前总是从网上去找跳跃表的实现原理,发现都很难理解,下面我会通过源码和画图分析让你一目了然。一、skiplist前面的文章说到了,zset的实现就有skiplist,我们来看一下zset的结构体:typedef struct zset { dict *dict; //字典存放value,以value为key zskiplist *zsl;} zset;你是否有疑...原创 2020-05-06 20:48:39 · 426 阅读 · 0 评论 -
Redis面试系列:Redis到底什么时候rehash?源码解析(二)
前言上一章把Redis基础类型介绍完了,更深的问题便会问:哈希表会有什么缺点?或者你了解hash吗?它是怎么解决冲突的?Redis渐进式rehash的原理是什么?下面就来深入的解析这些问题。一、字典字典是Redis中存在最广泛的一种数据结构不仅在哈希对象,集合对象和有序结合对象中都有使用,而且Redis所有的Key,Value都是存在db->dict这张字典中的。Redis 的字典...原创 2020-05-03 15:52:34 · 1302 阅读 · 0 评论 -
Redis面试系列:基础类型编码方式和应用场景(一)
前言面试中肯定会被问到一个问题:Redis有哪些基础类型,它们的应用场景是什么?或直接问:你实际项目中用到了哪些?下面会结合一些核心源码来讲解,还会讲一些细节点。一、基础类型核心的5个基础类型:string、list、hash、set、zset扩展:HyperLogLog、Geo、Pub/Sub、BloomFilter对象类型(type):字符串对象、列表对象、哈希对象、集合对象、有序...原创 2020-04-30 16:26:54 · 333 阅读 · 0 评论