2010-09-26 3 views
61

Я использую ORM под названием Ohm в Ruby, который работает поверх Redis, и мне любопытно узнать, как данные фактически хранятся. Мне было интересно, есть ли способ перечислить все ключи/значения в Redis db.Сбрасывание всех пар ключ/значение в redis db

Любое руководство поможет вам в значительной степени помочь (я в основном застрял). Заранее спасибо!

Update:
Примечание для других попробовать это с помощью Redis-консоли, используйте:

$ redis-cli keys 
* (press * followed by Ctrl-D) 
... (prints a list of keys and exits) 
$ 

Благодаря @antirez и @hellvinz!

ответ

110

Вы можете изучить набор данных Redis, используя инструмент redis-cli, включенный в дистрибутив Redis.

Просто запустите инструмент без аргументов, затем введите команды для поиска набора данных.

Например, KEYS отобразит все ключи, соответствующие шаблону в стиле глобуса, например: keys * вы увидите все доступные ключи.

Затем вы можете использовать команду TYPE, чтобы проверить, какой тип является данным ключом, если это список, вы можете получить элементы внутри, используя LRANGE mykey 0 -1. Если это набор, вы будете использовать вместо SMEMBERS mykey и так далее. Проверьте документацию Redis на список всех доступных команд и их работу.

+0

Thanks. Я обнаружил, что это действительно полезно! –

+29

Не понимая в то время, я чувствую себя униженным, чтобы получить руководство от Бога Редиса! –

20

Просто добавив практический рубиновый пример ответа antirez (не осмелюсь конкурировать с ним)

irb(main):002:0> require 'rubygems' 
=> true 
irb(main):003:0> require 'redis' 
=> true 
irb(main):004:0> r = Redis.new 
=> #<Redis:0x8605b64 @sock=#<TCPSocket:0x8605ab0>, @timeout=5, @port=6379, @db=0, @host="127.0.0.1"> 
irb(main):005:0> r.keys('*') 
+1

Спасибо! Теперь это кристально ясно :) –

19

Из командной строки можно также использовать команду dump, доступны с Redis 2.6.0

redis-cli KEYS \* | xargs -n 1 redis-cli dump 

(обратите внимание, что это также работает с командой get для более ранних версий, если вы не возражаете)

+0

Или используйте команду GET, если у вас старая версия Redis. И если у вас много ключей, вы можете параллелизовать команду xargs с -P. Пример: 'redis-cli KEYS * | xargs -n 1 -P8 redis-cli get' –

+4

Твой первый ответ, который я натолкнулся, сообщил мне, что мне пришлось скрывать * до \\ * в командной строке .... должен потратить около 20 минут на «неправильное количество аргументов» для команды redis, которая отлично работает на клиенте, пока я не найду это. Благодарю. –

+0

Добро пожаловать. У меня была одна и та же проблема :-) –

2

Я оказался здесь becau se Я искал способ резервного копирования всех ключей/значений в redis. Если это относится к вам, ознакомьтесь с этим article.

redis-cli bgsave