0

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

maxmemory 2gb
maxmemory-policy allkeys-lru

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

1.当我查询“热键”(最近经常使用)时,如果redis有键,我可以快速从redis获取结果,否则我可以从存储密钥的另一个数据库中获取密钥在磁盘中。2.每个键都有自己的寿命。当redis中有key过期时,其他数据库应该存储过期的key。

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

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

4

1 回答 1

2

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

并捕获过期/驱逐事件。

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

于 2013-04-01T09:25:43.087 回答