Skip to main content

从零实现redis(4)- 监听器(Listerner)

·29 words·1 min
WFUing
Author
WFUing
A graduate who loves coding.
Table of Contents

代码仓库
#

https://github.com/WFUing/redis-cache/tree/release_0.0.6

背景知识——guava-cache的删除监听器
#

我们在两种场景下删除数据是对用户透明的:

  1. size 满了之后,进行数据淘汰。
  2. expire 过期时,清除数据。

这两个特性对用户本来应该是无感的,不过用户如果关心的话,也可以通过添加删除监听器来获取到相关的变更信息。

具体实现

为了实现删除的监听,我们需要找到删除的位置,然后调用监听器即可。

  • evict 驱除的场景:每次 put 数据时,都会校验 size 是否达到最大的限制,如果达到,则进行 evict 淘汰。
  • expire 过期的场景

用户指定 expire 时间之后,回后台异步执行刷新。

也存在惰性删除的场景。

实现redis-cache的监听器
#