3
有什么办法,如果我有一个列表,例如:如何在redis的列表中获取某个项目的位置?
rpush "country", "Mexico"
rpush "country", "Morocco"
rpush "country", "M'erica"
有没有办法看到,摩洛哥在此列表中的1位?
有什么办法,如果我有一个列表,例如:如何在redis的列表中获取某个项目的位置?
rpush "country", "Mexico"
rpush "country", "Morocco"
rpush "country", "M'erica"
有没有办法看到,摩洛哥在此列表中的1位?
没有Redis命令来搜索列表中的给定项目,因为它将是O(n)操作。它不会超过几千项的可扩展性。
现在如果您知道您的列表足够小,则可以在客户端或服务器端实施此操作。
在客户端:
如果你不那么在意了网络带宽,只得到整个列表与“lrange MYLIST 0 -1”和实施客户端简单的线性搜索。
在服务器端:
您可以根据Lua server-side scripting实现线性搜索。这里有一个例子:
eval "local n = redis.call('LLEN', KEYS[1]) - 1
for i=0,n do
if redis.call('LINDEX', KEYS[1], i) == ARGV[1] then
return i
end
end
return -1" 1 mylist item_to_search
该脚本将返回列表中的项目的位置(从0开始),或-1,如果该项目没有找到。