- 博客(7)
- 收藏
- 关注
原创 Redis设计与实现---缓存淘汰策略
近似LRU执行过程:当redis内存超过maxmemory时,会随机采样(maxmemory-samples)个key,然后淘汰掉最旧的key,如果内存还是超过maxmemory,重复以上操作。如何采样就是看maxmemory-policy 的配置,如果是 allkeys 就是从所有的 key 字典中随机,如果是 volatile 就从带过期时间的 key 字典中随机。每次采样多少个 key 看的是 maxmemory_samples 的配置,默认为 5。
2024-05-29 23:31:29 1809
原创 Redis为什么快?
我们平常获取时间戳时,都是用System.currentTimeInMillis()方法 获取系统的时间戳,这种方式涉及到了系统调用,而系统调用是非常耗时的,单线程的Redis承受不起,所以对时间戳进行了一个缓存,由一个定时任务,每ms更新一次时间缓存。准备了一张新的全局哈希表,长度为旧哈希表的两倍,每来一个请求,将旧哈希表的的一个entrys 复制到新的哈希表中,避免了耗时操作。且如果查数据时,在redis内部会同时维护这两张哈希表,访问哈希表时,从两张哈希表中都查询,避免数据不一致。
2024-05-28 18:09:56 121
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人