2012-04-30 34 views
2

我想使用Redis而不是我的會話,原因很明顯。什麼是存儲數組的redis等價物?

舊國家代碼:

session[:some_stuff] = @my_objects.map(&:id) 

再後來:

session[:some_stuff].each{|obj| .. 

另外,

我想這個地圖的ID的存儲到Redis的。然後檢索它們。我無法找到任何與其他網絡資源相關的東西。有任何想法嗎?

回答

-1

我試圖用redis-store寶石思維,將解決一些問題,但事實證明這是行不通的。即使是穩定的1.0.0版本。

所以這是我做過什麼和它的工作得非常好:

def first_method 
    $redis = Redis.new 
    @customers.map(&:id).each{|c|$redis.sadd('export', c)} 


def other_method 
    @customers = [] 
    $redis.smembers('export').each{|c|@customers << Customer.find(c)} 

注意

你只需要確定哪些$ Redis的是曾經在一個方法。然後它將自身保存到MVC體系結構之外的無狀態位置。

1

您還沒有寫過關於如何設置Redis連接/適配器的內容,但基本上是SADD,用於將元素添加到Redis集合,並且SMEMBERS可檢索所有元素。

http://redis.io/commands#set

+0

Yah我讀到了,但他們的文檔都不適用於外行。例如,文檔中的任何命令都會失敗,因爲'myset'未定義。 – Trip

+0

你需要一個redis適配器。 https://github.com/redis/redis-rb另外,myset只是文檔示例鍵的名稱。你需要定義你自己的鍵,它基本上只是一個字符串。 – James

相關問題