我计划使用redis作为缓存,其中每个键都有一个到期集,我在redis.conf中使用了以下配置:
maxmemory 2gb
maxmemory-policy allkeys-lru
问题是如何将过期的密钥持久保存到另一个数据库,例如可以将密钥存储在磁盘中的MongoDB(或任何数据库)。要求如下:
1.当我查询“热键”(最近使用过的)时,如果redis有密钥,我可以快速从redis获取结果,否则我可以从另一个存储密钥的数据库中获取密钥。磁盘。 每把钥匙都有他们的生命。当redis中的密钥到期时,另一个数据库应该存储过期的密钥。
“当Redis以这种方式用作缓存时,如果应用程序还需要使用Redis作为存储,强烈建议创建两个Redis实例,一个作为缓存,以这种方式配置,一个作为一个商店,根据您的持久性需求进行配置,只保存与缓存数据无关的密钥。“ 引用http://redis.io/topics/config
我的问题是将过期的密钥持久保存到另一个数据库(磁盘中存储的密钥)而不是redis。
答案 0 :(得分:2)
您需要启用notify-keyspace-events http://redis.io/topics/notifications
捕获过期/逐出事件。
然后使用“psubscribe”侦听“del”事件并将这些密钥发送到另一个数据库。