我使用Redis的在我的軌道項目中,我試圖工會的Redis的套狀Redis的未來+ Rails的
$redis.smembers('set1') | $redis.smembers('set2')
之一,但它拋出錯誤這樣
undefined method `|' for #<Redis::Future:0x000001306e5830>
什麼是Redis::Future
?我使用的Redis和Redis的商店寶石
謝謝你通常返回
我使用Redis的在我的軌道項目中,我試圖工會的Redis的套狀Redis的未來+ Rails的
$redis.smembers('set1') | $redis.smembers('set2')
之一,但它拋出錯誤這樣
undefined method `|' for #<Redis::Future:0x000001306e5830>
什麼是Redis::Future
?我使用的Redis和Redis的商店寶石
謝謝你通常返回
未來的對象時,方法調用在管道或交易。
返回值僅在EXEC命令已應用於Redis服務器時可用。使用redis-rb,這意味着你應該先退出一個流水線或多塊。
如果要選擇/讀取數據,請在multi/exec塊之前執行,並且只執行multi/exec塊中的寫操作。
順便說一下,使用$ redis.sunion()在服務器端生成結果會更有效率。
什麼迪迪埃說,再加上檢查你的代碼是不是一個multi
塊內運行,像這樣:
$redis.multi do
$set1 = $redis.smembers("set1")
end
在這種情況下,$set1
是一個「未來」指向的結果,你會得到如塊就存在了。
您可以通過致電$set1.value
訪問實際的基礎價值。
從未來,您可以使用value方法訪問底層對象。在https://github.com/redis/redis-rb/blob/master/lib/redis/pipeline.rb查看課程定義 –