使用redis进行缓存,但使用的是持久性

时间:2013-04-01 08:50:26

标签: caching redis persist

我计划使用redis作为缓存,其中每个键都有一个到期集,我在redis.conf中使用了以下配置:

maxmemory 2gb
maxmemory-policy allkeys-lru

问题是如何将过期的密钥持久保存到另一个数据库,例如可以将密钥存储在磁盘中的MongoDB(或任何数据库)。要求如下:

1.当我查询“热键”(最近使用过的)时,如果redis有密钥,我可以快速从redis获取结果,否则我可以从另一个存储密钥的数据库中获取密钥。磁盘。 每把钥匙都有他们的生命。当redis中的密钥到期时,另一个数据库应该存储过期的密钥。

“当Redis以这种方式用作缓存时,如果应用程序还需要使用Redis作为存储,强烈建议创建两个Redis实例,一个作为缓存,以这种方式配置,一个作为一个商店,根据您的持久性需求进行配置,只保存与缓存数据无关的密钥。“ 引用http://redis.io/topics/config

我的问题是将过期的密钥持久保存到另一个数据库(磁盘中存储的密钥)而不是redis。

1 个答案:

答案 0 :(得分:2)

您需要启用notify-keyspace-events http://redis.io/topics/notifications

捕获过期/逐出事件。

然后使用“psubscribe”侦听“del”事件并将这些密钥发送到另一个数据库。