我有一个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)
请提供帮助,因为在我将元数据存储在内存缓存本身时,最好使用哪种数据存储,元数据在到期时间之前就会被删除,因为元数据的大小很小而且分配了分配它的一个小记忆卡。
答案 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服务器为“蜜獾”,因为当负载开始增加而我们的其他服务器开始自动缩放时,亲爱的獾只是不会给狗屎。