如果Redis被当做一个持久化存储使用 , 必须使用固定的keys-to-nodes映射关系 , 节点的数量一旦确定不能变化 。否则的话(即Redis节点需要动态变化的情况) , 必须使用可以在运行时进行数据再平衡的一套系统 , 而当前只有Redis集群可以做到这样 。
过期键的删除策略
Redis的过期键的删除策略
我们都知道 , Redis是key-value数据库 , 我们可以设置Redis中缓存的key的过期时间 。Redis的过期策略就是指当Redis中缓存的key过期了 , Redis如何处理 。
过期策略通常有以下三种:
定时过期:每个设置过期时间的key都需要创建一个定时器 , 到过期时间就会立即清除 。该策略可以立即清除过期的数据 , 对内存很友好;但是会占用大量的CPU资源去处理过期的数据 , 从而影响缓存的响应时间和吞吐量 。
惰性过期:只有当访问一个key时 , 才会判断该key是否已过期 , 过期则清除 。该策略可以最大化地节省CPU资源 , 却对内存非常不友好 。极端情况可能出现大量的过期key没有再次被访问 , 从而不会被清除 , 占用大量内存 。
定期过期:每隔一定的时间 , 会扫描一定数量的数据库的expires字典中一定数量的key , 并清除其中已过期的key 。该策略是前两者的一个折中方案 。通过调整定时扫描的时间间隔和每次扫描的限定耗时 , 可以在不同情况下使得CPU和内存资源达到最优的平衡效果 。
(expires字典会保存所有设置了过期时间的key的过期时间数据 , 其中 , key是指向键空间中的某个键的指针 , value是该键的毫秒精度的UNIX时间戳表示的过期时间 。键空间是指该Redis集群中保存的所有键 。)
Redis中同时使用了惰性过期和定期过期两种过期策略 。
Redis key的过期时间和永久有效分别怎么设置?
EXPIRE和PERSIST命令 。
我们知道通过expire来设置key 的过期时间 , 那么对过期的数据怎么处理呢?
除了缓存服务器自带的缓存失效策略之外(Redis默认的有6中策略可供选择) , 我们还可以根据具体的业务需求进行自定义的缓存淘汰 , 常见的策略有两种:
1、定时去清理过期的缓存;
2、当有用户请求过来时 , 再判断这个请求所用到的缓存是否过期 , 过期的话就去底层系统得到新数据并更新缓存 。
两者各有优劣 , 第一种的缺点是维护大量缓存的key是比较麻烦的 , 第二种的缺点就是每次用户请求过来都要判断缓存失效 , 逻辑相对比较复杂!具体用哪种方案 , 大家可以根据自己的应用场景来权衡 。
内存相关
MySQL里有2000w数据 , redis中只存20w的数据 , 如何保证redis中的数据都是热点数据
redis内存数据集大小上升到一定大小的时候 , 就会施行数据淘汰策略 。
Redis的内存淘汰策略有哪些
Redis的内存淘汰策略是指在Redis的用于缓存的内存不足时 , 怎么处理需要新写入且需要申请额外空间的数据 。
全局的键空间选择性移除
noeviction:当内存不足以容纳新写入数据时 , 新写入操作会报错 。
allkeys-lru:当内存不足以容纳新写入数据时 , 在键空间中 , 移除最近最少使用的key 。(这个是最常用的)
allkeys-random:当内存不足以容纳新写入数据时 , 在键空间中 , 随机移除某个key 。
设置过期时间的键空间选择性移除
volatile-lru:当内存不足以容纳新写入数据时 , 在设置了过期时间的键空间中 , 移除最近最少使用的key 。
volatile-random:当内存不足以容纳新写入数据时 , 在设置了过期时间的键空间中 , 随机移除某个key 。
volatile-ttl:当内存不足以容纳新写入数据时 , 在设置了过期时间的键空间中 , 有更早过期时间的key优先移除 。
总结
Redis的内存淘汰策略的选取并不会影响过期的key的处理 。内存淘汰策略用于处理内存不足时的需要申请额外空间的数据;过期策略用于处理过期的缓存数据 。
Redis主要消耗什么物理资源?
内存 。
Redis的内存用完了会发生什么?
如果达到设置的上限 , Redis的写命令会返回错误信息(但是读命令还可以正常返回 。)或者你可以配置内存淘汰机制 , 当Redis达到内存上限时会冲刷掉旧的内容 。
推荐阅读
- 彻底理解Linux 进程调度所有知识点
- 整理的一些在使用Python中常用网页字符串处理方法
- Nginx配置知识点梳理
- 普洱茶科普扫盲,茶知识扫盲
- redis实现分布式锁天然的缺陷
- DockeFIile知识点总结和发布自己的镜像
- 窥探Tomcat整体架构,server.xml常用配置解析
- 法律知识|饮料界的常青藤:备受争议的椰树牌椰汁为什么能火34年?
- 西府海棠,你不知道的小知识
- 十大茉莉花茶排名,中国十大名茶及关知识