我需要redis中2个大集合的交集的长度(SCARD)。所以这实现了我想要的:>SINTERSTOREintermediates:1s:2>SCARDintermediate但是集合很大,所以我不想存储中间值。从概念上讲,我想要:>SCARD(SINTERs:1s:2)有没有一种方法可以在单个命令中实现这一点,也许使用Lua脚本?或者我最好的选择是用我的应用程序语言编写脚本并在完成后删除中间值?例如使用python和redis-py:>>>r=redis.Redis(...)>>>pipe=r.pipeline()>>>res=pipe.sinterstore('intermediat
我有一个有序的集合-我已经评分并通过gem'redis'添加到我的redis数据库的项目,如下所示:Item.each{|item|$redis.zadd("scores",item.score,item.id)}还有一组包含基于标签ID的键的项目。Tag.each{|tag|tag.items.each{|item|$redis.sadd("tag_#{tag.id}",item.id)}}我正在尝试获取得分为x或更高的所有项目,并将其与具有特定标签的所有项目相交。我不需要对结果进行排序。我不确定首先是否需要使用有序集,但这似乎是一种存储和检索结果的有效方式。使用Redis查找范围和
我有一个有序的集合-我已经评分并通过gem'redis'添加到我的redis数据库的项目,如下所示:Item.each{|item|$redis.zadd("scores",item.score,item.id)}还有一组包含基于标签ID的键的项目。Tag.each{|tag|tag.items.each{|item|$redis.sadd("tag_#{tag.id}",item.id)}}我正在尝试获取得分为x或更高的所有项目,并将其与具有特定标签的所有项目相交。我不需要对结果进行排序。我不确定首先是否需要使用有序集,但这似乎是一种存储和检索结果的有效方式。使用Redis查找范围和
假设我添加了两个键:SEThusbandBobSETwifeAlice然后将这些添加到一个集合中:SADDfamilyhusbandwife我可以用SMEMBERSfamily得到这个集合的keys,它将返回:1)"wife"2)"husband"我真正想要的是值(value)观:1)"Alice"2)"Bob"在一次操作中这可能吗?本质上,我想用MGET管道传输SMEMBERS。 最佳答案 SMEMBERS,但是如果Set足够大,您的数据库将需要时间来返回所有成员,在此期间它将被阻塞。在这种情况下使用SSCAN推荐。编辑:错过了问
假设我添加了两个键:SEThusbandBobSETwifeAlice然后将这些添加到一个集合中:SADDfamilyhusbandwife我可以用SMEMBERSfamily得到这个集合的keys,它将返回:1)"wife"2)"husband"我真正想要的是值(value)观:1)"Alice"2)"Bob"在一次操作中这可能吗?本质上,我想用MGET管道传输SMEMBERS。 最佳答案 SMEMBERS,但是如果Set足够大,您的数据库将需要时间来返回所有成员,在此期间它将被阻塞。在这种情况下使用SSCAN推荐。编辑:错过了问
我有两个排序集,想要交集,即。(年龄在25、35之间)和(工资在250、350之间)关于效率有没有比以下更好的方法:ZUNIONSTOREt_age1ageWEIGHTS1ZREMRANGEBYSCOREt_age-inf(25ZREMRANGEBYSCOREt_age(35+infZINTERSTOREresult2salaryt_ageWEIGHTS10ZRANGEBYSCOREresult250350 最佳答案 你应该先用ZCARD检查哪个ZSET的元素少,并克隆和修剪较短的那个。其次,您将留下2个剩菜。您可以重复使用相同的辅
我有两个排序集,想要交集,即。(年龄在25、35之间)和(工资在250、350之间)关于效率有没有比以下更好的方法:ZUNIONSTOREt_age1ageWEIGHTS1ZREMRANGEBYSCOREt_age-inf(25ZREMRANGEBYSCOREt_age(35+infZINTERSTOREresult2salaryt_ageWEIGHTS10ZRANGEBYSCOREresult250350 最佳答案 你应该先用ZCARD检查哪个ZSET的元素少,并克隆和修剪较短的那个。其次,您将留下2个剩菜。您可以重复使用相同的辅
我正在尝试存储媒体对象,并让它们可以通过redis在特定时间范围内检索。我选择了一个排序集数据类型来执行此操作。我正在添加如下元素:zAdd:key:media:552672score:1355264694zAdd:key:media:552672score:1355248565zAdd:key:media:552672score:1355209157zAdd:key:media:552672score:1355208992zAdd:key:media:552672score:1355208888zAdd:key:media:552672score:1355208815其中,key是媒
我正在尝试存储媒体对象,并让它们可以通过redis在特定时间范围内检索。我选择了一个排序集数据类型来执行此操作。我正在添加如下元素:zAdd:key:media:552672score:1355264694zAdd:key:media:552672score:1355248565zAdd:key:media:552672score:1355209157zAdd:key:media:552672score:1355208992zAdd:key:media:552672score:1355208888zAdd:key:media:552672score:1355208815其中,key是媒
我需要获得可用于Redis排序集的所有分数。redis>ZADDmyzset10"one"(integer)1redis>ZADDmyzset20"two"(integer)1redis>ZADDmyzset30"three"(integer)1现在我想检索myzset的所有分数,即。10、20、30。 最佳答案 编辑:由于您之前关于值大小的问题并不明显,我做了一些额外的研究。根据当前文档,无法仅从已排序的集合中获取分数。要获得分数,您需要做的是同时将它们添加到一个单独的集合中,并在需要时从那里获取它们。虽然您首先应该做的是尝试将您