使用哪个数据存储,存储与memcache中的键对应的元数据?

时间:2012-06-01 07:11:31

标签: memcached redis datastore

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

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

请提供帮助,因为在我将元数据存储在内存缓存本身时,最好使用哪种数据存储,元数据在到期时间之前就会被删除,因为元数据的大小很小而且分配了分配它的一个小记忆卡。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

zadd misscounts misscount key1

...因为zadd添加条目(如果尚未存在)或覆盖现有条目(如果存在)。如果您在每次发生未命中时触发进程,则可以使用:

zincrby misscounts 1 key1

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

可以找到Redis命令的完整文档here。 Redis中不同类型的存储选项的说明详细here

哦,最后一点。根据我的经验,Redis是THE SHIT。很抱歉诅咒(以帽子为单位),但没有其他办法可以做Redis公正。我们称我们的Redis服务器为“蜜獾”,因为当负载开始增加而我们的其他服务器开始自动缩放时,亲爱的獾只是不会给狗屎。