2014-02-18 28 views
0

我需要執行如下對Redis的:Redis的一個電話,多指令執行與返回類型

ZINTERSECT out 2 myset1 myset2 
ZRANGE out 0 -1 (lets say it returns a set [20,30,40,50]) 
MGET user:20:blabla user:30:blabla user:40:blabla user:50:blabla (it returns [1,2,3,4]) 
ZRANGE blabla:1:value 0 -1 
ZRANGE blabla:2:value 0 -1 
ZRANGE blabla:3:value 0 -1 
ZRANGE blabla:4:value 0 -1 

這是一個交易,我喜歡的類型結構「的名單列表」。我的問題:

1-可以在一次調用中運行它嗎?

2-我應該使用Transaction還是Scripting?

3-在沒有Redis的腳本或事務特性的情況下在高流量下運行所有​​這些線路是否可行?

感謝

回答

0

2 - 我應該使用交易或腳本的呢?

由於您在隨後的命令中使用某些命令的結果,因此需要腳本。

Lua腳本通常很快。 Redis中的腳本也是交易的定義。

3 - 在沒有Redis的腳本或事務功能的情況下在高流量下運行所有​​這些行是否可行?

這取決於你認爲的「高流量」。無論如何,你應該測試並看看你的方法是否可行。在大多數情況下,簡單的Lua腳本也會很快。

最重要的是,您應該考慮您要使用的每個命令的時間複雜度。這些可以在documentation of each command中找到。

+0

感謝您的回覆。對於問題1,我需要返回的值。我寫的不僅是寫作。其中一個的結果用於其他。在這種情況下,它如何與「一個電話」一起工作?是否需要先運行第一個才能獲得必要的設置? – ftb

+1

只有lua腳本可以處理某些命令依賴於前一個命令的結果的情況。 – yinqiwen

+0

@anL是的,看到更新的答案。 – Agis