2010-07-11 21 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

相关问题