我使用的是Spring Data RedisTemplate(不是Repository)。
一切正常template.opsForValues().get("mykey:1")
但我有一些更复杂的键,例如" myobject: somesituation :1"和" myobject:anothersituation:2"等等。我需要做类似的事情:
template.opsForValues().get("myobject:somesituation:*")
使用通配符,我想获得" 某些情况"中的所有值,无论它的id是什么。
使用redis命令行,我没有问题。
Obs。:我正在使用反应模板,不知道(相信)这是否是问题所在。 Obs2:经过研究,我刚刚发现了关于Spring Repository的帖子,得到了所有密钥,通过命令行获取等等。但不是我的具体问题。
答案 0 :(得分:3)
redis哈希会更好地为您的数据建模吗? https://redis.io/topics/data-types
代替顶级键
myobject:somesituation:1
myobject:somesituation:2
myobject:somesituation:3
在顶层,您只有一个按键
myobject:somesituation
并且值本身具有键/值对
Object value = template.opsForHash().get("myobject:somesituation", "1");
OR
Map<Object,Object> map = template.opsForHash().entries("myobject:somesituation");
value = map.get("1");
避免使用redis KEYS命令,因为它在执行时会阻止所有redis客户端。扫描并不是更好,如果您分配了密钥,它可能需要数百次往返来重做以扫描整个密钥空间。
答案 1 :(得分:2)