2010-07-11 62 views
1

我正在使用Rails和Redis。是否Redis實例只能用於1個項目?

從介紹Redis的,我發現這樣的信息:

開始Redis的服務器:

redis-server 

使用Redis的客戶:

> redis-cli 
redis> set key value 
OK 
redis> get key 
"value" 

從樣品中,我有一個問題:

redis實例是否只能用於1個項目?你可以看到,沒有「數據庫」或「集合」或類似的東西。如果兩個不同的項目使用相同的redis,他們可能會將相同的密鑰更改爲無效值。

那麼,我需要爲不同的Rails項目創建具有不同端口的不同實例嗎?

回答

1

如果在兩個或多個應用程序之間共享單個Redis實例(或集羣),那麼您應該命名空間來將鍵合理分配到這些應用程序之間,這是出於您觀察的原因。看看redis-namespace gem,它提供了一個很好的Ruby接口來完成這個任務。

+0

謝謝!我得到它 – Freewind 2010-07-11 17:08:51

9

請記住,redis也有數據庫(如果我沒有記錯的話,其中有16個數據庫) - 它們只是沒有命名,它們是數字。因此,舉例來說,如果你使用redis-rb連接時,你會得到這樣一個片段:

$redis = Redis.new(:host => 'localhost', :port => 6379, :db => 5) 

這將連接到數據庫5.我用這個有很多運行測試,以及使我的測試不要干涉我的開發數據庫。

+1

這也可以在純粹的redis中使用「SELECT」命令 – 2010-07-14 08:48:55

+0

我認爲它可以超過16個。你可以在redis.conf中通過添加「databases 42」來設置它 - http://rediscookbook.org /multiple_databases.html – asyncwait 2011-02-11 16:15:57

+0

根據Salvatore Sanfilippo(Redis的創建者)的說法,沒有「最大」的數據庫數量,而是建議保持數量較小(小於1000),尤其是在使用密鑰到期時。討論:http://groups.google.com/group/redis-db/browse_thread/thread/ca35385c2919e870 – bosgood 2012-01-25 21:38:08

相關問題