2013-03-21 52 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,如果该项目没有找到。

相关问题