我有简单的redis列表键=>“ supplier_id”
现在,我想要它检索列表的所有值,而无需实际遍历列表或从列表中弹出值
从列表中检索所有值的示例现在,我遍历了redis的长度
element = []
0.upto(redis.llen("supplier_id")-1) do |index|
element << redis.lindex("supplier_id",index)
end
没有更好的Redis建模迭代就可以做到这一点吗?谁能建议
我有简单的redis列表键=>“ supplier_id”
现在,我想要它检索列表的所有值,而无需实际遍历列表或从列表中弹出值
从列表中检索所有值的示例现在,我遍历了redis的长度
element = []
0.upto(redis.llen("supplier_id")-1) do |index|
element << redis.lindex("supplier_id",index)
end
没有更好的Redis建模迭代就可以做到这一点吗?谁能建议
Answers:
要使用Redis检索列表中的所有项目,您无需迭代和获取每个单独的项目。这确实是低效的。
您只需要使用LRANGE命令一次即可检索所有项目。
elements = redis.lrange( "supplier_id", 0, -1 )
将返回列表中的所有项目,而不会更改列表本身。
我对您的问题尚不清楚,但如果provider_id是数字,为什么不使用ZSET
?
像这样添加您的值:
ZADD suppliers 1 "data for supplier 1"
ZADD suppliers 2 "data for supplier 2"
ZADD suppliers 3 "data for supplier 3"
然后,您可以删除所有内容(但不包括供应商三),如下所示:
ZREMRANGEBYSCORE suppliers -inf 2
要么
ZREMRANGEBYSCORE suppliers -inf (3
如果您只想阅读它,它也使您可以非常快速地访问(按供应商ID)。
希望有帮助!