![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
redis笔记
文章平均质量分 75
wishcloud
这个作者很懒,什么都没留下…
展开
-
redis源码
字符串 redis的字符串结构是SDS,是一个自带长度信息的字节数组 struct SDS<T> { T capacity; //数组容量 1byte T len; //数组长度 1byte byte flags; //特殊标志位 1byte byte[] content; //数组内容 } SDS使用的泛型T,是为了根据属性的大小来判断使用什么类型,redis对内存做了极致的优化。 字符串长度不得超过512M embstr与raw原创 2021-06-03 15:13:26 · 139 阅读 · 0 评论 -
redis扩展
再谈分布式锁 在集群中,如果一个客户端申请了一把锁,然后主节点挂了,从节点还未来得及同步的时候,另一个客户端取得了锁,这就相当于两个客户端拿到了一把锁,这样不安全。 redlock算法 加锁时会向过半节点发送set指令,只要过半节点成功,就加锁成功,释放锁时向所有节点发送del指令。 redlock会导致性能下降。 过期策略 redis将设置了过期时间的key单独放在一个集合里,定时遍历删除,除此之外,还会使用惰性策略删除,即当访问的时候检查一下这个key。 定时扫描策略 redis默认每秒进行十次扫描,扫原创 2021-06-03 15:14:02 · 121 阅读 · 0 评论 -
redis集群
主从同步 当主节点挂掉之后,从节点过来接管。 CAP原理:当网络分区发生时,一致性与可用性两难全 一致性、可用性、分区容忍性 网络分区:分布式系统的节点发生网络断开的情况 最终一致 redis主从数据是异步同步的,并不满足一致性,但满足可用性,即使网络分区,主节点也会支持修改。redis保证最终一致性,即从节点会努力追赶主节点,使数据保持一致。 主从同步与从从同步 从从同步是为了减轻主节点的压力。 增量同步 redis的同步是指令流,主节点会把对自己状态产生影响的指令记录到本地的内存buf原创 2021-06-03 15:12:15 · 94 阅读 · 0 评论 -
redis原理
Redis的单线程依赖于多路复用,即事件轮询以达到并发。 非阻塞IO 事件轮询 在执行某条指令时,若这段时间内没有事件到来,处于阻塞状态,最多等待timeout事件,就立即返回,若有事件到来,挨个处理相应事件。处理完了继续返回轮询 指令队列与响应队列 定时任务 redis的定时任务会记录在一个被称为“最小堆”的数据结构中,,最快要执行的任务放在最上面,每个事件轮询周期,将到时间点的任务进行处理,然后记录距离最近的任务的时间间隔,这个就是未来的timeout。 通信协议------使用了文本协议 RESP—r原创 2021-06-03 15:10:24 · 62 阅读 · 0 评论 -
redis基础
五大基础结构 String redis的字符串是动态字符串,是可以修改的,类似于ArrayList,采用预分配冗余空间的方式减少内存的频繁分配。小于1M扩容加倍,大于则是多扩1M 知识点:键值对、批量键值对、过期与set扩展、计数 list 链表而非数组,列表弹出最后一个元素,内存被回收。 知识点:队列(lpop)、栈(rpop)、lindex、ltrim、快速列表(ziplist组成quicklist) hash 无序字典,与HashMap类似,数组加链表。rehash采用渐进式rehash策原创 2021-06-03 15:09:41 · 90 阅读 · 0 评论