Что такое Redis
Redis, или, точнее, Remote Dictionary Server , представляет собой базу данных типа «ключ-значение». В отличие от стандартных решений Redis предоставляет структуры данных в оперативной памяти, а не на диске. Он также включает такие структуры, как строки, списки, наборы строк, упорядоченные наборы строк, хэши, растровые изображения, данные, относящиеся к объектам в пространстве, а также потоки данных. Redis как база данных работает с данными в оперативной памяти, но возможен перенос данных на диски. Использование этой обширной базы данных дает пользователю множество возможностей.
Памятка Redis (cheat sheet) содержит наиболее часто используемые команды.
redis-server /path/redis.conf # Запустить redis с соответствующим файлом конфигурации redis-cli # Открыть приглашение redis sudo systemctl restart redis.service # Перезапустить Redis sudo systemctl status redis # Проверка статуса Redis
APPEND key value # добавить значение к ключу BITCOUNT key [start end] # подсчитывать установленные биты в строке SET key value # установить значение в ключе SETNX key value # установить, если не существует значения в ключе SETRANGE key offset value # перезаписать часть строки в ключе, начинающемся с указанного смещения STRLEN key # получить длину значения, хранящегося в ключе MSET key value [key value …] # установите для нескольких ключей несколько значений MSETNX key value [key value …] # установите для нескольких ключей несколько значений, только если ни один из ключей не существует GET key # получить значение в ключе GETRANGE key start end # получить подстроку сохраненного значения от начальных до конечных смещений (оба включительно) MGET key [key …] # получить значения всех заданных ключей INCR key # увеличить значение в ключе INCRBY key increment # увеличить целочисленное значение ключа на заданную величину INCRBYFLOAT key increment # увеличить значение ключа с плавающей точкой на заданную величину DECR key # уменьшите целочисленное значение ключа на единицу DECRBY key decrement # уменьшить целочисленное значение ключа на заданное число DEL key # удалить ключ EXPIRE key 120 # ключ будет удален через 120 секунд TTL key # возвращает количество секунд до тех пор, пока ключ не будет удален
Список - это последовательность упорядоченных значений
RPUSH key value [value …] # поместить новое значение в конец списка RPUSHX key value # добавить значение в конец списка, только если оно существует LPUSH key value [value …] # поместить новое значение в начало списка LPUSHX key value # добавить значение в начало списка, только если оно существует LRANGE key start stop # указать подмножество списка LINDEX key index # получить элемент из списка по его индексу LINSERT key BEFORE|AFTER pivot value # вставить элемент до или после другого элемента в списке LLEN key # возвращает текущую длину списка LPOP key # удалить первый элемент из списка и возвращает его LSET key index value # задает значение элемента в списке по его индексу LREM key number_of_occurrences value # удалить вхождения значения, если список, хранящийся в ключе LTRIM key start stop # обрезать список до указанного диапазона RPOP key # удалить последний элемент из списка и возвращает его RPOPLPUSH source destination # удалить последний элемент в списке, добавьте его в другой список и верните его BLPOP key [key …] timeout # удалить и получить первый элемент в списке или заблокировать до тех пор, пока один из них не станет доступным BRPOP key [key …] timeout # удалить и получить последний элемент в списке или заблокировать до тех пор, пока один из них не станет доступным
Набор похож на список, за исключением того, что он не имеет определенного порядка, и каждый элемент может появиться только один раз.
SADD key member [member …] # добавить заданное значение в набор SCARD key # получить количество участников в наборе SREM key member [member …] # удалить заданное значение из набора SISMEMBER myset value # проверить, находится ли заданное значение в наборе. SMEMBERS myset # возвращает список всех членов этого набора SUNION key [key …] # комбинирует два или более наборов и возвращает список всех элементов SINTER key [key …] # пересечение нескольких множеств SMOVE source destination member # переместить элемент из одного набора в другой SPOP key [count] # удаление и возврат одного или нескольких случайных элементов из набора
Отсортированный набор похож на обычный набор, но теперь каждое значение имеет соответствующую оценку. Эта оценка используется для сортировки элементов в наборе.
ZADD key [NX|XX] [CH] [INCR] score member [score member …] # добавить один или несколько элементов в отсортированный набор или обновите его оценку, если он уже существует ZCARD key # получить количество элементов в отсортированном наборе ZCOUNT key min max # подсчитать элементы в отсортированном наборе с оценками в пределах заданных значений ZINCRBY key increment member # увеличить количество баллов участника в отсортированном наборе ZRANGE key start stop [WITHSCORES] # возвращает подмножество отсортированного набора ZRANK key member # определение индекса элемента в отсортированном наборе ZREM key member [member …] # удалить один или несколько элементов из отсортированного набора ZREMRANGEBYRANK key start stop # удалить все элементы в отсортированном наборе в пределах заданных индексов ZREMRANGEBYSCORE key min max # удалить все элементы в отсортированном наборе по индексу с оценками, упорядоченными от высокого к низкому ZSCORE key member # получить оценку, связанную с данным mmeber, в отсортированном наборе ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] # возвращает диапазон элементов в отсортированном наборе по количеству баллов
Хэши - это сопоставления между строковыми полями и строковыми значениями, поэтому они являются идеальным типом данных для представления объектов.
HGET key field # получить значение хэш-поля HGETALL key # получить все поля и значения в хэше HSET key field value # задать строковое значение хэш-поля HSETNX key field value # установить строковое значение хэш-поля, только если это поле не существует HMSET key field value [field value …] # установить несколько полей одновременно HINCRBY key field increment # увеличить значение в хэше на X HDEL key field [field …] # удалить одно или несколько хэш-полей HEXISTS key field # определить, существует ли хэш-поле HKEYS key # получить все поля в хэше HLEN key # получить количество полей в хэше HSTRLEN key field # получить длину значения хэш-поля HVALS key # получить все значения в хэше
HyperLogLog использует рандомизацию, чтобы обеспечить приблизительное количество уникальных элементов в наборе, используя только постоянный и небольшой объем памяти
PFADD key element [element …] # добавить указанные элементы в указанный HyperLogLog PFCOUNT key [key …] # возвращает приблизительную мощность набора (ов), наблюдаемого HyperLogLog в ключе PFMERGE destkey sourcekey [sourcekey …] # объединить N гиперлогов в один
PSUBSCRIBE pattern [pattern …] # прослушивание сообщений, опубликованных на каналах, соответствующих заданным шаблонам PUBSUB subcommand [argument [argument …]] # проверка состояния подсистемы Pub/Sub PUBLISH channel message # отправить сообщение на канал PUNSUBSCRIBE [pattern [pattern …]] # прекратить прослушивание сообщений, отправленных на каналы, соответствующие заданным шаблонам SUBSCRIBE channel [channel …] # прослушивание сообщений, опубликованных на заданных каналах UNSUBSCRIBE [channel [channel …]] # прекратить прослушивание сообщений, отправленных на указанные каналы