Redis - Механизмы 

Page / - Изменено Alexandr Fokin в 2022/10/19 16:08 

Механизмы 
Изменено Alexandr Fokin
в 2022/10/19 16:08

Оглавление

Параллелизм	Для входящих запросов используется 1 процесс и 1 поток. Базовые операции являются атомарными.	 	
 	 	 	
Конвейер
Pipelining	Механизм, позволяющий накопить несколько команд, а потом отправить их одним запросом, чтобы оптимизировать сетевое взаимодействие.
!В отличии от транзакции допускается, что во время выполнения группы команд, может быть выполнена команда из другого соединения.	Redis pipelining
https://redis.io/docs/manual/pipelining/	
Транзакции	 	Транзакции	
Срок жизни	Управление истечение ключа можно задать только на уровне всего элемента. (Т.е. нельзя удалить отдельный элемент List/Set/Hash и др., а только весь набор целиком).	 	
Постоянное хранение.
Persistent	 	 	 	
Snapshots	Полный снимок оперативной памяти.
Есть блокирующий (без копирования) и неблокирующий (с копированием) режимы.
Также используется в механизме репликации.	 	
AOF 
(Append Only File)	Запись всех команд в файл.
Требует периодической оптимизации для уменьшения размера файла.	File sync | FSync частота сброса буфера на носитель.
Event sourcing	
	Redis persistence
https://redis.io/docs/manual/persistence/			
Lua скрипты	 	Lua скрипт API	
 	 	 	
Channel
Pub/Sub	Реализация модели издатель/подписчик.
После подключения к канаду клиент будет получать все сообщения, поступающие на канал (сообщения никак не распределяются между клиентами).
На стороне Redis выделяется буфер для хранения сообщений, еще не обработанных всеми клиентами. Если клиент сильно отстает в обработке сообщений (заполняя буфер), то он может быть отключен.
Каналы являются глобальными для ноды приложения, не вложены в пространство какой-либо базы данных.	Redis Pub/Sub
https://redis.io/docs/manual/pubsub/	
 	 	 	
Кластер	Асинхронная Репликация | Replication	master-slaves
Распределяет нагрузку операций чтения.
Повышает отказоустойчивость.	
 	 	
	Redis replication
https://redis.io/docs/manual/replication/			

pipelining vs transaction in redis
https://stackoverflow.com/questions/29327544/pipelining-vs-transaction-in-redis
Redis Cluster - transaction vs LUA script, which one results in a better performance?
https://stackoverflow.com/questions/33625749/redis-cluster-transaction-vs-lua-script-which-one-results-in-a-better-perform
Redis: Pipelining, Transactions and Lua Scripts
https://rafaeleyng.github.io/redis-pipelining-transactions-and-lua-scripts
Шпаргалка по Redis
https://habr.com/ru/post/204354/