Как стать автором
Обновить

Комментарии 16

Как-то мало тут практических советов. Можно сказать вообще нет. Почти все надергано из доки.
Задача 3, pipelining, выполнение нескольких команд одним запросом.

Так удобнее и нагляднее:
$ redis-cli set test:1:pvalue 'test'
OK

Кстати, параметр -n позволяет указать номер используемой базы (коих по умолчанию 16).

Так же из практики использования добавил бы еще удаление ключей по заданной маске. Конечно команда DEL не поддерживает работу с масками, но вопрос решаем через конвеер, xargs и KEY:
$ redis-cli -n 3 KEYS 'test*' | xargs redis-cli -n 3 DEL
(integer) 1
KEYS — моветон, в redis 2.8 появилась альтернатива в виде сканеров.
А у всех уже поголовно обновились до 2.8? ;)
Новая версия вышла не так давно что бы среднестатистический пользователь начал её использовать.
Исправьте:
после установки значения командой EXPIRES
Исправил, спасибо
Слишком длинные ключи — плохая идея

А какова всё-таки максимальная длина ключа?
Здесь antirez сообщает о
up to 2^31 bytes
, но в официальной документации подтверждения я не смог обнаружить.
Вопрос интересный. Но я тоже не нашел информации в документации по этому поводу.
Это самая бесполезная статья по Redis, которую я видел. Все более лаконично и понятно есть на сайте в двух кликах от вас.
Да уж, зашел посмотреть на шпаргалку, а тут какие-то задачки. Шпаргалка — это то, что распечатать и на стенку повесить можно.
Знание развивается, когда опыт перенимается и вносятся улучшения. Вместите всю эту информацию в один лист в понятной форме, и я буду первым, кто распечатает.
У меня небольшой вопрос к опытным пользователям Redis. Длина названия ключа сильно влияет на размер базы?

Поясню. Скажем есть тип данных хэш для пользователя с несколькими полями: login, password, sex и т.д.
Тогда для наглядности вот один из способов получить данные

hmget user:100, login, password, sex

На сколько база будет меньше, если назвать соответствующие поля, скажем, l, p, s?

hmget user:100, l, p, s

То есть для каждой записи в базе сохраняется название поля или нет? Стоит оптимизировать названия полей в базе или нет?

То есть для каждой записи в базе сохраняется название поля или нет?
Конечно, ведь в разных записях могут быть разные поля.

Стоит оптимизировать названия полей в базе или нет?
Моё мнение — стоит в пределах разумного, особенно если много записей. Это, безусловно, сэкономит в первую очередь память.

Всё вышеперечисленное справедливо также и для других schema-less БД (например, MongoDB)
Сделайте в своей клиентской библиотеке модель с приватными ключами и публичными методами. Где приватные ключи будут иметь короткие имена, а методы — человекочитаемые.

Плюс не забывайте записывать схему редиса при любом изменении.

Названия ключей и полей, по возможности, стоит делать короче, как и стараться меньше использовать ZSET, где SCORE тоже достаточно прожорливое поле.

PS И не стоит сильно заморачиваться с длиной если данных не много и их рост не планируется.
Текущий мануал написан для redis-cli. Но в клиентах могут быть отличия в реализации некоторых комманд и особенно в том, что они возвращают. Можно было бы об этом написать.

Так же мне бы было интересно почитать практические советы о работе с редис на большом трафике. Есть много вопросов, которые можно было бы обсудить. Например, о настройки конфига под конкретные задачи.

Так же можно было бы написать о встроенном языке lua для редис. У него есть свои ограничения по сравнению с обычной версией луа.

Так же было бы интересно почитать о том, как в целом редис работает изнутри. Блокировка операций, сброс дампа на диск, в каком виде хранятся ключи и т.д.

добрый день. уточните пожалуйста можно ли задать при добавлении хеша obj.hmset() timeout этого самого хеша?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации