2010-07-11 3 views
1

Я использую Rails с redis.Может ли экземпляр redis работать только для одного проекта?

С введением Redis, я нашел такую ​​информацию:

старт REDIS сервер:

redis-server 

использование REDIS клиента:

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

из образца, я есть вопросы:

Может ли экземпляр redis работать только для одного проекта? Вы можете видеть, что нет «базы данных» или «коллекции» или подобных вещей. Если два разных проекта используют один и тот же redis, они могут изменить один и тот же ключ на недопустимое значение.

Итак, нужно ли создавать разные экземпляры с разными портами для разных проектов Rails?

ответ

1

Если вы используете один экземпляр Redis (или кластер) между двумя или более приложениями, то вы, вероятно, должны проставлять свои ключи, чтобы их рационально разделить между этими приложениями по причинам, которые вы наблюдали. Взгляните на драгоценный камень redis-namespace, который обеспечивает хороший интерфейс Ruby для этого.

+0

спасибо! Я получаю это – Freewind

9

Имейте в виду, что redis также имеет базы данных (16 из них, если я правильно помню) - они просто не названы, это цифры. Так, например, если вы используете redis-rb для подключения, вы получите фрагмент кода, как это:

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

Это будет подключаться к базе данных 5. Я использую это много для выполнения тестов, а так мои тесты не мешайте моей базе данных разработки.

+1

, это также доступно в чистом redis, используя команду «SELECT» –

+0

Я думаю, что ее может быть больше 16. Вы можете установить ее в redis.conf, добавив «базы данных 42» - http://rediscookbook.org /multiple_databases.html – asyncwait

+0

Согласно Salvatore Sanfilippo (создателю redis), нет «максимального» количества баз данных, а скорее рекомендация держать число маленьким (менее 1000), особенно когда используется ключевой истечение. Обсуждение: http://groups.google.com/group/redis-db/browse_thread/thread/ca35385c2919e870 – bosgood