博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redis Object的Idle Time
阅读量:4213 次
发布时间:2019-05-26

本文共 775 字,大约阅读时间需要 2 分钟。

1. 获取object的idletime的算法
    if (server.lruclock >= o->lru) {
        return (server.lruclock - o->lru) * REDIS_LRU_CLOCK_RESOLUTION;
    } else {
        return ((REDIS_LRU_CLOCK_MAX - o->lru) + server.lruclock) *
                    REDIS_LRU_CLOCK_RESOLUTION;
    }
2.redis每隔 REDIS_LRU_CLOCK_RESOLUTION更新一次server.lruclock,REDIS_LRU_CLOCK_RESOLUTION默认为10
server.lruclock = (server.unixtime/REDIS_LRU_CLOCK_RESOLUTION) & REDIS_LRU_CLOCK_MAX;
3.#define REDIS_LRU_CLOCK_MAX ((1<<21)-1) 
4.Redis为了节省内存,采取了一个折中的方案,采用21bit(redis中的comment说到是22bit,从上面来看应该是21bit)再乘以10s的方案,每隔10s更新一下server.lruclock,2^22能保存到时间间隔也只有1.5年左右,如果超过1.5年怎么办?算法1为了解决这个问题,提供了两个if分支,第一种是常见情况,object在读写以后更新lru,而系统每隔10s更新一次,假设一段时间内这个object没有被访问过那么就会有server.lruclock >= o->lru。第二种情况,如果超过1.5年server.lruclock就有可能变成一个较小的值,使得某些object的lru,大于server.lruclock,于是就有第二个if分支。

转载地址:http://xqdmi.baihongyu.com/

你可能感兴趣的文章
hdoj 1001 水题坑人 小心
查看>>
康拓展开
查看>>
二叉堆 删除 插入 调整 堆排序
查看>>
hdoj 1874 单源最短路径
查看>>
hdoj 2544 最短路径 dijkstra + 优先队列
查看>>
同余定理 + 快速幂
查看>>
计算几何初步
查看>>
NYOJ 33蛇形填数
查看>>
常用快捷键
查看>>
Wifi列表获取遇到的问题
查看>>
后端:搭建服务器
查看>>
Android 通过Web服务器与Mysql数据库交互
查看>>
2012(第三届)预赛第四题
查看>>
蓝桥杯2012(第三届)(分段乘法)
查看>>
蓝桥杯2012(第三届)第八题
查看>>
CSP 2017_12_4行车路线
查看>>
图论模板
查看>>
CSP 交通规划201609-4
查看>>
CSP 201312-1 出现次数最多的数
查看>>
CSP 高速公路 强连通分量 tarjan
查看>>