Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ FreeBSD and Nix ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

SQL\T-SQL

Общая

WEB Разработка

ORACLE SQL \ JAVA

Мото

Стрельба, пневматика, оружие

Саморазвитие и психология


Урок по Redis



Урок по Redis

 

Ранее рассматривалась связка на FreeBSD:
http://snakeproject.ru/rubric/article.php?art=freebsd_redis_09.2018


Redis - key-value хранилище значений


Пример установки на Centos 7:
yum install redis.x86_64

Включение в автозагрузку:
systemctl enable redis.service
 

Старт сервиса:
systemctl start redis.service

Проверка:
systemctl status redis.service

Входим в командную строку:
redis-cli
127.0.0.1:6379>


1. Установка строкового значения ключу "foo", получение значения ключа:
127.0.0.1:6379> EXISTS foo
(integer) 0

127.0.0.1:6379> SET foo "Hello World"
OK

127.0.0.1:6379> GET foo
"Hello World"

127.0.0.1:6379> EXISTS foo
(integer) 1


2. Установкой периода жизни значения ключа в секундах:
127.0.0.1:6379> SET foo "Hello World" EX 10
OK

127.0.0.1:6379> GET foo
"Hello World"

127.0.0.1:6379> GET foo
(nil)


3. Добавление к значению ключа:
127.0.0.1:6379> SET foo "Hello"
OK

127.0.0.1:6379> APPEND foo " World"
(integer) 11

127.0.0.1:6379> GET foo
"Hello World"


4. Установка нового значения и возвращение старого значения:
127.0.0.1:6379> SET foo "Hello"
OK

127.0.0.1:6379> GETSET foo "World"
"Hello"

127.0.0.1:6379> GET foo
"World"


5. Операции инкремента и декремента на единицу:
127.0.0.1:6379> SET foo 3
OK

127.0.0.1:6379> INCR foo
(integer) 4

127.0.0.1:6379> GET foo
"4"

127.0.0.1:6379> DECR foo
(integer) 3

127.0.0.1:6379> GET foo
"3"


6. Работа с множествами (неупорядоченные наборы значений):
127.0.0.1:6379> SADD fooset "Hello"
(integer) 1

127.0.0.1:6379> SADD fooset "World"
(integer) 1

127.0.0.1:6379> SMEMBERS fooset
1) "World"
2) "Hello"

127.0.0.1:6379> help SCARD
SCARD key
summary: Get the number of members in a set
since: 1.0.0
group: set

127.0.0.1:6379> SCARD fooset
(integer) 2


7. Работа с упорядоченными множествами (задаем порядок хранения):
127.0.0.1:6379> ZADD foosetsort 2 "one"
(integer) 1

127.0.0.1:6379> ZADD foosetsort 1 "two"
(integer) 1

127.0.0.1:6379> ZRANGE foosetsort 0 -1 WITHSCORES
1) "two"
2) "1"
3) "one"
4) "2"


8. Работа с хэш-таблицами(объекты со структорой из полей, поля имеют имена и значения):
127.0.0.1:6379> HSET fooobj fooset 11
(integer) 1

127.0.0.1:6379> HGET fooobj fooset
"11"

127.0.0.1:6379> HSET fooobj fooset2 22
(integer) 1

127.0.0.1:6379> help HVALS
HVALS key
summary: Get all the values in a hash
since: 2.0.0
group: hash

127.0.0.1:6379> HVALS fooobj
1) "11"
2) "22"

127.0.0.1:6379> help HGETALL
HGETALL key
summary: Get all the fields and values in a hash
since: 2.0.0
group: hash

127.0.0.1:6379> HGETALL fooobj
1) "fooset"
2) "11"
3) "fooset2"
4) "22"


9. Работа с cписками (последовательности значений, упорядоченне по порядку создания):
127.0.0.1:6379> LPUSH foolist "one"
(integer) 1

127.0.0.1:6379> LPUSH foolist "two"
(integer) 2

127.0.0.1:6379> LPOP foolist
"two"

127.0.0.1:6379> LINSERT foolist BEFORE one "zero"
(integer) 2

127.0.0.1:6379> LRANGE foolist 0 -1
1) "zero"
2) "one"

127.0.0.1:6379> LPOP foolist
"zero"

127.0.0.1:6379> LPOP foolist
"one"

127.0.0.1:6379> LPOP foolist
(nil)


10. Транзакции:

Начнем транзакцию, дадим команды и зафиксируем ее:
127.0.0.1:6379> MULTI
OK

127.0.0.1:6379> SET foo 0
OK

127.0.0.1:6379> INCR foo
QUEUED

127.0.0.1:6379> DECR foo
QUEUED

127.0.0.1:6379> EXEC
1) OK
2) (integer) 1
3) (integer) 0

Начнем транзакцию, дадим команды и прервем транзакцию:
127.0.0.1:6379> MULTI
OK

127.0.0.1:6379> SET foo 0
OK

127.0.0.1:6379> INCR foo
QUEUED

127.0.0.1:6379> DISCARD
OK

Отката в транзакциях не существует, ошибка в командах не приведет к откату


11. Подписки иил каналы

Клиенты Redis подписываются на каналы сообщений:

Клиент 1:
Например подпишимся на канал с именем "work":
127.0.0.1:6379> SUBSCRIBE work
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "work"
3) (integer) 1

Клиент 2:
Теперь другой клиент может написать в этот канал:
127.0.0.1:6379> PUBLISH work "Hello World"
(integer) 1

Клиент 1:
Увидит:
1) "message"
2) "work"
3) "Hello World"


12. Документация

Сайт проекта:
https://redis.io

Все команды:
https://redis.io/commands

 


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.
Весь материал на сайте носит ознакомительный характер,
за его использование другими людьми, автор ответственности не несет.

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект