2013-08-25 27 views
6

我是redis,並且我發現學習redis的基礎知識非常簡單,但是當我嘗試瞭解如何將它與rails一起使用時,它變得流暢,我找不到任何好的tutoriel這也解釋了從頭開始的步驟,例如我發現這樣的代碼:無法理解redis如何與rails一起工作

class User < ActiveRecord::Base 
    # follow a user 
    def follow!(user) 
    $redis.multi do 
     $redis.sadd(self.redis_key(:following), user.id) 
     $redis.sadd(user.redis_key(:followers), self.id) 
    end 
    end 

    # unfollow a user 
    def unfollow!(user) 
    $redis.multi do 
     $redis.srem(self.redis_key(:following), user.id) 
     $redis.srem(user.redis_key(:followers), self.id) 
    end 
    end 

但這個例子中,沒有其他的例子說明如何使用follow方法,什麼是對象我需要傳遞給這個方法(從關係數據庫中得到這個對象嗎?或者是什麼)等等...

我在我的搜索中發現的所有例子都不完整,而且當我們決定使用rails時,這種渲染並不容易!

我還發現redis的使用是在繼承自ActiveRecord的模型上,我無法理解:如果redis在大多數情況下用於關係數據庫或單獨使用,以及最常用的方式是什麼,以及究竟如何?

我知道我的問題很大,但我搜索的是如何一起使用redis和rails,如果您對我有很好的資源,我將非常感激。謝謝

回答

8

沒有其他的例子說明如何使用跟蹤方法,什麼是我需要傳遞給此方法的對象(是從關係數據庫?還是什麼這個對象)等等

用戶是ActiveRecord對象 - 您系統的用戶。

friend = User.find(params[:friend_id]) 
current_user.follow! friend 

通常,Redis被用作輔助數據存儲。常規用戶數據,客戶數據等存儲在Postgres或MySQL中,並且特定於redis的數據存儲在redis中。

RailsCasts 399 on autocomplete中,Ryan展示瞭如何使用Redis來作爲搜索引擎的補充。他使用$redis.zrevrange$redis.zincrby

+0

如果我在redis中存儲用戶un粉絲的id,這裏有什麼優勢?所以最後我會從mysql/postgres中提取他們的信息! – medBo

+0

優勢是拉動你關注的人的名單幾乎不變。對於數百萬行,此查詢在標準數據庫中需要很長時間。 –

+0

@medBo這是否回答您的問題?如果是這樣,請標記爲已接受。 –

相關問題