cachemanager.net - 如何根据传递的密钥从redis缓存中获取对象列表?

时间:2016-06-15 07:15:36

标签: caching redis cachemanager

如何根据传递的密钥从redis缓存中获取对象列表?

我正在探索cachemanager.net以获取redis缓存。我已经完成了这些例子。但我找不到任何与基于传递的密钥获取对象列表相关的示例。

var lst =cache.Get("Key_1");

它只返回一个对象。

但我希望这样。我在缓存中存储了1000个对象,其密钥名称为Key_1Key_2Key_3 ..... Key_1000。如果我将Key_*作为密钥传递,我想获得1000个对象的列表。

2 个答案:

答案 0 :(得分:0)

您可以使用redis哈希代替。您可以使用hgetall命令检索该哈希值中的所有值。

http://redis.io/commands#hash

或者如果你想使用普通键值对,你必须编写一个lua脚本来实现它。

local keys = redis.call('keys','key_*')
return redis.call('mget',keys)

生产中不建议使用密钥,因为它是阻塞的。

您可以使用scan命令而不是键来获取与该模式匹配的所有键,然后按照相同的步骤来实现相同的目标。

答案 1 :(得分:0)

CacheManager不提供搜索键的任何功能或通过通配符获取许多键。这根本不是缓存如何工作。

正如Karthikeyan所指出的,在Redis中你可以使用keys运算符,但这不是一个好的解决方案,只能用于手动调试。其他缓存系统甚至没有类似的东西,因此CacheManager也无法提供该功能。希望有意义;)

使用CacheManager,您可以将所有对象存储在一个缓存键中并缓存列表。如果您使用redis,那可能会有一些限制,因为序列化可能会成为一个问题。

或者,您可以单独存储每个对象并在循环中检索它们。 redis客户端也会在CacheManager中优化某些内容,如果你有2层缓存,性能会随着时间的推移而变得更好。