redis

作者: 阿西Enzo | 来源:发表于2022-07-29 09:27 被阅读0次

1.redis为什么那么快

1. 基于内存的读写;

2.单线程的key-value操作,保证并发安全,无线程切换的开销

3.存储数据结构优化,全局hash

2.redis跳表

在有序列表基础上,增加分层索引,增强查询效率(类似折半查找),以此实现读效率提升

3. key过期了,但是内存未释放

1. redis删除机制

1.1 惰性删除,在读取时,检查过期时间,过期了,再删除,返回空(依赖于下次读取时间点)

1.2 定时删除,可能是100ms全检查一次,将过期的删除

ps. 对于设定过期时间的key,在有效期或未删除是再次set,而且未指定过期时,该key变成了永久有效

4.redis内存清理策略

redis内存大小由maxmemory设置来限制内存大小,对于超出内存容量的,会依据内存淘汰策略进行内存的释放,来进行新数据的存储,这就会可能导致未到期的key被删除

8个内存淘汰策略

volatile-ttl: 针对设置了过期时间的key,按过期时间排序,越接近的优先释放;

volatile-random:针对设置了过期时间的key,随机删除

volatile-lru:针对设置了过期时间的key,采用lru算法进行内存释放

vloatile-lfu:针对设置了过期时间的key,采用lfu算法释放内存

allkey-random:针对所有key,随机删

allkey-lru:针对所有key,采用lru算法

allkey-lfu:针对所有key,采用lfu

noevoctin:不删除,但是不接受写入,返回OOM异常

5.LRU与LFU内存淘汰策略

LRU:least recently used 最近最少使用,以最近使用时间为参考

LFU:least frequency used 最少使用次数,以最少使用次数为参考

绝大多数情况我们偏向使用LRU;当存在大量热点数据时,可以考虑使用LFU

相关文章

网友评论

      本文标题:redis

      本文链接:https://www.haomeiwen.com/subject/lmitwrtx.html