Получение/перечисление всех пар ключ/значение в базе данных Redis
Я использую ORM под названием Ohm в Ruby, который работает поверх Redis, и мне любопытно узнать, как данные фактически хранятся. Мне было интересно, есть ли способ перечислить все ключи/значения в DBD Redis.
Любое свидание будет очень помогать мне (я в основном застрял). Спасибо заранее!
Update:
Примечание для других, пытающихся использовать это с помощью redis-cli, используйте это:
$ redis-cli keys
* (press * followed by Ctrl-D)
... (prints a list of keys and exits)
$
Спасибо @antirez и @hellvinz!
Ответы
Ответ 1
Вы можете изучить набор данных Redis, используя инструмент redis-cli
, включенный в дистрибутив Redis.
Просто запустите инструмент без аргументов, затем введите команды для изучения набора данных.
Например, KEYS
отобразит все ключи, соответствующие шаблону стиля глобуса, например: keys *
вы увидите все доступные ключи.
Затем вы можете использовать команду TYPE
, чтобы проверить, какой тип является заданным ключом, если это список, вы можете извлекать элементы внутри, используя LRANGE mykey 0 -1
. Если это набор, вы будете использовать вместо SMEMBERS mykey
и так далее. Проверьте документацию Redis на список всех доступных команд и их работу.
Ответ 2
В командной строке вы также можете использовать команду dump, доступную с Redis 2.6.0
redis-cli KEYS \* | xargs -n 1 redis-cli dump
(обратите внимание, что это также работает с командой get для более ранних версий, если вы не возражаете)
Ответ 3
Просто добавив практический пример Ruby в ответ на 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('*')
Ответ 4
Я оказался здесь, потому что искал, как сделать резервную копию всех ключей/значений в redis. Если это относится к вам, ознакомьтесь с этим article.
Используйте redis-cli bgsave