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,如果該項目沒有找到。