因此,我有一堆哈希,名称如下:
state:city:street
在每一个内部都类似:
signId => 10,
damaged => 1
我本质上是想做一些我不确定是否可行的诡计。
我想获取
signId
的所有值,但仅当signId
条目存在但damaged
条目不存在时...对于所有属于通配符
state:city:*
的哈希所有这些都在PHP / Laravel / Predis中
最佳答案
没有内置功能或功能可在redis中进行。我不建议您在生产中使用keys
。如redis documentation所述;
keys
should be used in production environment with extreme care. It may ruin performance when it is executed against large databases.
我将推荐三个选项;
scan
是keys
的更好替代方案,因为它不会长时间阻塞服务器。在应用程序级别,您可以执行与您的模式匹配的哈希键,然后两次使用HGET
(O(1))进行比较。如果您的哈希键没有很多字段,那么HGETALL
也是另一个选择。 HMSET
或HSET
时,您也要在集合/列表中按该键。通过跟踪键,您以后不再需要使用scan
。您可能只是以分页的方式获取它们以执行相关的哈希命令。作为推荐之一,这还需要应用程序级查询而不是数据层查询。 关于php - php Redis::hscan使用通配符名称和条件检索所有哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61495620/