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