我想使用Redis的存儲大集user_ids,並與這些 IDS,在該用戶以前被分配了「羣組ID」的:在redis中的高效查找表 - 使用redis集實現?
User_ID | Group_ID
1043 | 2
2403 | 1
user_ids的數量是相當大的( 〜1000萬);獨特的 組ID的數量約爲3 - 5
我給這家LUT目的是家常便飯:
找到一個給定用戶組ID;和
返回的其他用戶的列表(指定長度)與同 組ID,鑑於用戶
有可能是一個地道的方式redis的,或者至少做到這一點一種最有效的方式。如果是這樣我想知道它是什麼。這是我的工作實現的簡化版本(使用Python客戶端):
# assume a redis server is already running
# create some model data:
import numpy as NP
NUM_REG_USERS = 100
user_id = NP.random.randint(1000, 9999, NUM_REG_USERS)
cluster_id = NP.random.randint(1, 4, NUM_REG_USERS)
D = zip(cluster_id, user_id)
from redis import Redis
# r = Redis()
# populate the redis LuT:
for t in D :
r.sadd(t[0], t[1])
# the queries:
# is user_id 1034 in Group 1?
r.sismember("1", 1034)
# return 10 users in the same Group 1 as user_id 1034:
r.smembers("1")[:10] # assume user_id 1034 is in group 1
所以,我已經實現了使用該LUT普通Redis的套;每組都鍵入一個組ID(1,2或3),所以總共有三組。
這是最有效的方式存儲這些數據給予我想運行的查詢類型嗎?
您可以使用流水線合併5個請求:http://redis.io/topics/pipelining –