- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
Redis到底是单线程还是多线程
Redis
6.0版本之前的单线程指的是其网络I/O和键值对读写是由一个线程完成的。
Redis6.0引入的多线程指的是网络请求过程采用了多线程,而键值对读写命令仍然是单线程
处理的,所以Redis依然是并发安全的。
也就是只有网络请求模块和数据操作模块是单线程的,而其它的持久化、集群数据同步等,
其实是由额外的线程执行的。
Redis单线程为什么还能这么快
1、命令执行基于内存操作,一条命令在内存里操作的时间是几十纳秒。
2、命令执行是单线程操作,没有线程切换开销。
3、基于IO多路复用机制提升Redis的I/O利用率。
4、高效的数据存储结构:全局hash表以及多种高效数据结构,比如:跳表,压缩列表,链
表等等。
Redis底层数据是如何用跳表来存储的
跳表:将有序链表改造为支持近似“折半查找”算法,可以进行快速的插入、删除、查找操
作。
Redis
Key过期了为什么内存没释放
你在使用
Redis
时,肯定经常使用
SET
命令。
SET
除了可以设置
key-value
之外,还可以设置
key
的过期时间,就像下面这样:
1127.0.0.1:6379
SET
tuling
zhuge
EX
120
2OK
3127.0.0.1:6379
TTL
tuling
4(integer)
117
此时如果你想修改
key
的值,但只是单纯地使用
SET
命令,而没有加上过期时间的参数,
那这个
key
的过期时间将会被擦除。
1127.0.0.1:6379
SET
tuling
zhuge666
2OK
3127.0.0.1:6379
TTL
tuling
//
key永远不过期了!
4(integer)
‐1
导致这个问题的原因在于:SET
命令如果不设置过期时间,那么
Redis
会自动擦除这个
key
的过期时间。
如果你发现
Redis
的内存持续增长,而且很多
key
原来设置了过期时间,后来发现过期时
间丢失了,很有可能是因为这个原因导致的。
这时你的
Redis
中就会存在大量不过期的
key,消耗过多的内存资源。
所以,你在使用
SET
命令时,如果刚开始就设置了过期时间,那么之后修改这个
key,也
务必要加上过期时间的参数,避免过期时间丢失问题。
Redis对于过期key的处理一般有惰性删除和定时删除两种策略。
1、惰性删除:当读/写一个已经过期的key时,会触发惰性删除策略,判断key是否过期,
如果过期了直接删除掉这个key。
2、定时删除:由于惰性删除策略无法保证冷数据被及时删掉,所以Redis会定期(默认每
100ms)主动淘汰一批已过期的key,这里的一批只是部分过期key,所以可能会出现部分
key已经过期但还没有被清理掉的情况,导致内存并没有被释放。
Redis
Key没设置过期时间为什么被Redis主动删除了
当Redis已用内存超过maxmemory限定时,触发主动清理策略。
主动清理策略在Redis
4.0之前一共实现了
6
种内存淘汰策略,在
4.0
之后,又增加了
2
种
策略,总共8种:
a)
针对设置了过期时间的key做处理:
1.
volatile-ttl:在筛选时,会针对设置了过期时间的键值对,根据过期时间的先后进
行删除,越早过期的越先被删除。
2.
volatile-random:就像它的名称一样,在设置了过期时间的键值对中,进行随机
删除。
3.
volatile-lru:会使用
LRU
算法筛选设置了过期时间的键值对删除。
4.
volatile-lfu:会使用
LFU
算法筛选设置了过期时间的键值对删除。
b)
针对所有的key做处理:
5.
allkeys-random:从所有键值对中随机选择并删除数据。
6.
allkeys-lru:使用
LRU
算法在所有数据中进行筛选删除。
7.
allkeys-lfu:使用
LFU
算法在所有数据中进行筛选删除。
c)
不处理:
8.
noeviction:不会剔除任何数据,拒绝所有写入操作并返回客户端错误信息
(error)
OOM
command
not
allowed
when
used
memory,此时Redis只响应读
操作。
Redis淘汰Key的算法LRU与LFU区别
LRU
算法(Least
Recen
您可能关注的文档
- Spring boot 配置参数一览.pdf
- JVM面试突击第一季.pdf
- 一线互联网项目场景设计与架构面试核心点(500页).pdf
- Spring整合Mybatis原理解读.pdf
- 2026部编版小学数学三年级下册期末综合学业能力测试试卷(3套含答案解析).docx
- 2026部编版小学数学一年级上册期末综合学业能力测试试卷(3套含答案解析).pdf
- 2026部编版小学数学三年级下册期末综合学业能力测试试卷(3套含答案解析).pdf
- 2026部编版小学数学二年级上册期末综合学业能力测试试卷(3套含答案解析).pdf
- 废实验动物危废处置规范.ppt
- 实验室危废应急物资储备指南.ppt
- 实验室危废随意倾倒查处规范.ppt
- 实验室危废废液处理设施规范.ppt
- 实验室危废处置应急管理规范.ppt
- 初中地理中考总复习精品教学课件课堂讲本 基础梳理篇 主题10 中国的地理差异 第20课时 中国的地理差异.ppt
- 初中地理中考总复习精品教学课件课堂讲本 基础梳理篇 主题10 中国的地理差异 第21课时 北方地区.ppt
- 危险废物处置人员防护培训办法.ppt
- 危险废物处置隐患排查技术指南.ppt
- 2026部编版小学数学二年级下册期末综合学业能力测试试卷(3套含答案解析).docx
- 危险废物处置违法案例分析汇编.ppt
- 2026部编版小学数学一年级下册期末综合学业能力测试试卷3套精选(含答案解析).docx
原创力文档


文档评论(0)