Redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现?
2023-09-27 14:23:02 时间
分析
如果你连这个问题都不知道,上来就懵了,回答不出来,那线上你写代码的时候,想当然的认为写进 Redis 的数据就一定会存在,后面导致系统各种 bug,谁来负责?常见的有两个问题:
- 往 Redis 写入的数据怎么没了?
可能有同学会遇到,在生产环境的 Redis 经常会丢掉一些数据,写进去了,过一会儿可能就没了。我的天,同学,你问这个问题就说明 Redis 你就没用对啊。Redis 是缓存,你给当存储了是吧?
啥叫缓存?用内存当缓存。内存是无限的吗,内存是很宝贵而且是有限的,磁盘是廉价而且是大量的。可能一台机器就几十个 G 的内存,但是可以有几个 T 的硬盘空间。Redis 主要是基于内存来进行高性能、高并发的读写操作的。
那既然内存是有限的,比如 Redis 就只能用 10G,你要是往里面写了 20G 的数据,会咋办?当然会干掉 10G 的数据,然后就保留 10G 的数据了。那干掉哪些数据?保留哪些数据?当然是干掉不常用的数据,保留常用的数据了。
- 数据明明过期了,怎么还占用着内存?
这是由 Redis 的过期策略来决定。
Redis 过期策略
Redis 过期策略是:定期删除+惰性删除。
所谓定期删除,指的是 Redis 默认是每隔 100ms 就随机抽取一些设置了过期时间的 key,检查其是否过期,如果过期就删除。
假设 Redis 里放了 10w 个 key,都设置了过期
相关文章
- redis实战笔记(9)-第9章 降低内存占用
- Redis Sentinel 机制与用法(二)
- Redis 脚本
- 在Java中使用Redis
- DENIED Redis is running in protected mode because protected mode is enabled
- Redis开发运维实践开发设计规范之内存考虑
- Redis开发与运维. 3.7 发布订阅
- Redis内存数据满了导致宕机
- Redis介绍、安装、基础命令
- ServiceStack.Redis之IRedisClient<第三篇>
- redis是单线程的为什么速度还这么快?
- Redis 内存压缩原理
- Golang 实现 Redis(3): 实现内存数据库
- Redis内存使用优化与存储
- Redis常见问题汇总
- Redis的内存回收机制
- springmvc Cacheable (Redis)
- Redis内存使用优化与存储
- 曹工说Redis源码(8)--面试时,redis 内存淘汰总被问,但是总答不好
- redis HA高可用方案Sentinel和shard
- 【Redis】CentOS7安装并运行Redis
- 【Redis】Redis 的过期策略以及内存淘汰机制详解