Redis中键值失效底层是如何实现的呢?

如题所示。如果对每个key都加一个定时器的话肯定不现实。希望有懂Redis原理的大神指点一二

阅读 1.8k
1 个回答

redis的数据库结构redisDb当中,除了有个dict用以存放key-value的数据,还会有会有一个expires用以存放key的过期时间,参考下图:

具体的操作有:

  • 设定key的过期时间,直接从expires赋值;
  • 获取key的过期时间,直接从expires取值;
  • 移除key的过期时间,直接从expires删掉;
  • 获取key的value,从expires中取值,没过期再从dict取value;

底层的配置有:

  • 立即删除:设定key的过期时间之时就创建一个定时器回调,到点就来删除;
  • 惰性删除:获取key的value之时需要检查过期时间,过期就删除;
  • 定时删除:每隔一段时间就来检查expires,过期的全删除;

希望可以帮助到你。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进