1

我有一个 memcache 后端,我想添加 redis 来添加 memcache 键的元数据。元数据如下: Miss_count:数据不在内存缓存中的次数。Hash_value:memcache中key对应的数据的hash值。

Data in memcache : key1 ::: Data
Meta data (miss count) : key1_miss ::: 10
Meta data (hash value) : key1_hash ::: hash(Data)

请提供帮助,因为当我将元数据存储在内存缓存本身中时,元数据在其到期时间之前就被删除了,因为元数据的大小很小并且slab分配正在分配一个小内存抓住它。

4

2 回答 2

1

随着元数据会随着时间的推移而增加,redis 的哈希概念会失效。因此,应用客户端逻辑来查看是否满足 max_zipped。

于 2012-08-13T16:14:59.690 回答
0

如果我正确理解了您的用例,我怀疑 Redis 可能是一个不错的选择。假设您将随着时间的推移定期更新与各种散列相关的元数据未命中计数,您可能希望使用 Redis 排序集。例如,如果您希望将未命中计数存储在名为“misscounts”的排序集中,则添加/更新这些计数的 Redis 命令将是一个并且相同:

zadd misscounts misscount key1

...因为 zadd 如果条目不存在则添加该条目,或者如果存在则覆盖现有条目。如果您在每次发生未命中时触发的进程中有一个挂钩,您可以改为使用:

zincrby miscounts 1 key1

类似于 zadd 命令的行为,如果一个条目不存在,zincrement 将创建一个新条目(使用增量值作为计数),或者如果一个条目存在,则将现有计数增加您传递的增量值。

Redis 命令的完整文档可以在这里找到。此处详细介绍了 Redis 中不同类型的存储选项。

哦,还有最后一点。以我的经验,Redis 很糟糕。很抱歉诅咒(大写),但根本没有其他方法可以做到 Redis 正义。我们称我们的 Redis 服务器为“honey badger”,因为当负载开始增加并且我们的其他服务器开始自动缩放时,honey badger 根本不在乎。

于 2012-06-01T16:12:09.550 回答