![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
redis
DivineH
这个作者很懒,什么都没留下…
展开
-
Redis设计与实现--数据结构与对象(二)
整数集合 简介 整数集合是集合键的底层实现之一,当一个集合只包含整数值元素,并且元素数量不多时,redis就会使用整数集合作为集合键的底层实现。 整数集合定义在intset.h/intset中: typedef struct intset { // 编码方式 uint32_t encoding; // 集合包含的元素数量 uint32_t length; /...原创 2020-03-14 16:49:43 · 221 阅读 · 0 评论 -
Redis设计与实现--数据结构与对象(一)
简单动态字符串简介与c语言的区别获取字符串长度的复杂度为常数项防止缓冲区溢出减小修改字符串时带来的内存重分配次数空间预分配惰性空间释放二进制安全链表简介字典 简单动态字符串 简介 字符串是我们经常用到的数据结构,在c语言中,字符串是采用N+1长度的字符数组来表示长度为N的字符串,其中,字符数组末尾为’\0’,用来代表字符串的末尾。但是,redis并没有直接采用c语言的实现方式,而是自己构建了一种...原创 2019-12-21 19:13:42 · 384 阅读 · 0 评论 -
缓存穿透,缓存击穿,缓存雪崩解决方案分析
前言设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。缓存穿透缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。解决方案有很多种方法可以有效地...转载 2018-06-22 10:06:52 · 201 阅读 · 0 评论