CSDN话题挑战赛第2期
参赛话题: 面试宝典 加粗样式
1、Redis set 可以设置大小吗?Redis lru队列如何实现?
无法像java一样,初始化设置大小。官方最大说是2的32次方-1个(42亿左右)。但是,一般都是要看自己机器内存大小而言,另外还有key-value的大小。
如果按照HashMap和双向链表实现,需要额外的存储存放 next 和 prev 指针,牺牲比较大的存储空间,显然是不划算的。所以Redis采用了一个近似的做法,就是随机取出若干个key,然后按照访问时间排序后,淘汰掉最不经常使用的,具体分析如下:
-
整体思路:首先定义一个淘汰池,这个淘汰池是一个数组(大小为16),然后触发淘汰时会根据配置的淘汰策略,先从符合条件的key中随机采样选出5&#x