05. Redis дел

Redis дел

Redis работы службы поддержки. Атомная сделка имеющий атомная, включены в операции транзакции выполняется либо успех или все терпят неудачу. Но REDIS Откат не поддерживается, но вы можете избежать ошибочной операции в секторах развития испытания. Можно сказать , это половина атомов поддержки, смотрите на причины.
Много раз мы должны быть транзакционными операциями.
Переводчик файла: https://redis.io/topics/transactions
практика: питон версия Reference
https://github.com/7Edge/redis-demo/blob/master/redis_pipeline.py

дела

MULTI, ВЫПЛНЫ, ВЫБРАСЫВАЙТЕ и операции УОЧИ являются лежащим в основе Redis дела по эксплуатации. Эти операции позволяют набор операций как атомарное выполнение операции. Были в состоянии сделать, потому, что две важные гарантии:

1. командование приказало

Все команды в транзакции упорядочены, и исполнение порядок выполнения. Когда возникает другая ошибка соединения клиента, это может повлиять на сделку запущенную нет. Это гарантирует, что выполнение команды изолированный работает. Потому что это однопоточное и redisserver использование ввод / вывод процесс мультиплексирования одновременные соединения.

2. Всегда атом

В транзакции либо в целом выполнения команды, или команде не выполнить, Redis транзакция является атомарной. EXEC команда включает все операции , выполняемые в порядке, если не перед вызовом Мультиселектором команды клиента на стороне сервера связи отключен, никаких действий не будет выполняться, если EXEC команда выполняется, будет выполняться все операции . Использование конкатенирующего файл только если конфигурация, Redis сделать однократном (2) системный вызов записывается в АОП файл. Однако, если происходит сбой сервера Redis или вынужден убить администратор, то только часть операции может быть зарегистрирована, в этом случае, Redis , когда перезапуск будет обнаружить , что этот случай не удался запустить и бросить курить, сообщил об ошибке. Тогда мы должны использовать Redis-регистрацию Аоф инструмент , инструмент будет восстановить файл АОП, удалить только часть сделки, а затем перезапустить Redis может.

Открыть с помощью операции

1. 执行MULTI  # 开启事务, 返回OK或者其它
2. 执行多个命令  # 事务中的操作, 返回QUEUED,表明加入事务命令队列
3. EXEC  # 执行,返回每个事务中命令的返回结果列表

4. DISCARD 如果在EMULTI之后EXEC之前要关闭事务,再EXEC之前执行即可flush所有事务命令队列中的命令并关闭事务

Ошибка транзакции Redis происходит

В операции, некоторые операции могут возникнуть или ошибка выполнения, ошибки выполнения команды в основном два:

1. EXEC неправильно перед

Существует ошибка в передней части EXEC команды, эта команда не была успешно добавлена ​​в очередь. Такие, как: команда Неверное число параметров, таких как использование неправильное имя команды.

Для этой ошибки, клиент может восприниматься, так как при выполнении команды, на самом деле, добавляется в очередь команд, в случае успешного возвращения QUEUED инструкции , чтобы присоединиться другие доходы неверны. Эта ошибка, большинство клиента автоматически прерывает транзакцию и ВЫБРАСЫВАЙТЕ дела. (Python был Redis модуля, из - за трубопровод и мульти / Exec комбинированных, redis.exceptions.ResponseError ненормального, но не ненормальная команда не будет по- прежнему должен выполнить, то есть из - за сочетание трубопровода)
Тем не менее, после того, как Redis 2.6.5, сервер будет записывать накопленная ошибка команды в очереди команд, то выполнение EXEC, сервер будет отказаться от исполнения сделки и возвращает ошибку, автоматически отбрасывать.

Но прежде, чем Redis2.6.5, для устранения этой ошибки, поведение сервера выполняется только успешно добавлено в очередь команд, эквивалент подмножества набора команд выполняются один раз, несмотря произошла ошибка. 2.6.5 сервера Redis не справиться с этой логикой, но логика добавляется к новой команде является трубопроводом команды трубопровода, трубопровод до поведения может быть достигнут, трубопровод возвращает список результатов, возвращаемой команду.

После ошибки 2. EXEC

EXEC После ошибки выполнения, например, ключевой конфликт. Для этой ошибки, метод не обрабатывает все остальные команды будут выполняться, даже если новая ошибка команды во время операции.

Почему это неправильно не поддерживает рулонную спину?

Как реляционная база данных, транзакция откатывается поддержка, и даже поддержки ошибок в Redis делах. Redis причина, почему существует такое поведение, потому что это две вещи:

  1. Redis ошибка синтаксиса команды или отказ будет присутствовать только в ключе модифицированного в неправильный тип данных. Эти ошибки очень легко найти в стадии разработки или тестирования.
  2. Redis Это должно быть простым и быстрым, вам не нужно откатить емкость.

Redis фирма относится только атомной только для выполнения команды, чтобы присоединиться к очереди, Redis транзакция не поддерживает ошибку отката во время выполнения команды.

Redis радужных замков для регистрации и съемочных

Одновременные операции, придется изменить то же время данные, хотя сделка, потому что Redis чтения нити, изолированные, но иногда нам нужно зафиксировать данные, исключительное использование, только чтобы заблокировать наши данные с использованием оптимистической блокировки Redis при условии, эта оптимистическая блокировка только транзакции используют, проверить поведение во время операции выполнения EXEC, если есть изменения, он выполняет обратно-EXEC не удалось. ЧАСЫ используются, чтобы обеспечить поведение CAS для REDIS дела. CAS то есть, мы часто говорим, оптимистическая блокировка.

Оптимистическая блокировка транзакции не удается, вы должны проверить результаты, неудача попробовать еще раз.

Мы знаем, что 4 характеристики ACID транзакций:

Atomic原子性: 事务中操作集,要么都成功,要么都失败回滚。
Redis事务所指的原子性仅仅只针对将命令加入执行队列的过程,Redis事务不支持在命令执行过程中的错误回滚。

Consistency 一致性: 事务前后,数据库是从一个一致性状态到另一个一致性状态。如转账前后总数是一致的。

Isolation 隔离性: 并发事务时,事务之间都不会由于访问同一数据而被干扰。在这个隔离层面讲,就有多种隔离级别,因为隔离级别时影响并发事务效率和数据安全性的,要在效率和安全间平衡是关键。隔离级别太严格,并发效率低,数据安全;隔离级别太低,又怕数据不安全。

Durability 持久性:事务一旦被提交,改变时永久的,即要持久化。很多都会将事务操作完后追加到操作日志文件中,数据者写入磁盘文件系统持久化。

Команда ЧАСЫ используется для контроля за изменение ключа, ключ, когда монитор, если изменение произошло до выполнения EXEC, то транзакция прерывается, и возвращает Null, указывая, что сделка не удалась. Для того, чтобы зафиксировать данные доступны до сделки. ЧАСЫ MULTI и EXEC

Используйте UNWATCH может вымывать СМОТРЯТ ключи.

резюме

  1. Redis атомной фирма относится только к обработке добавляется только в очередь выполнения команды, Redis транзакция не поддерживает ошибки отката во время выполнения команды
  2. Данные могут наблюдать с помощью оптимистическую блокировку. Оптимистичный саз, пессимистичный для других и так далее.

рекомендация

отwww.cnblogs.com/ZJiQi/p/11550964.html