2013-03-21 23 views

回答

2

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

相關問題