Redis Asuntos de combate -redis

Redis combate -redis Asuntos

  1. Descripción

 

   Redis aislamiento de transacciones acciones separadas: toda la secuencia de comandos de una transacción se realizan secuencialmente. Relaciones en el proceso de implementación, no otros comandos enviados por solicitud del cliente interrumpidos.

 

  Redis ningún concepto nivel de aislamiento: Cola de comandos no se ejecutará antes de que el real no presentada porque las confirmaciones de transacción antes de cualquier instrucción real no se ejecutarán en la consulta no existe "en la transacción ve asuntos actualización, la consulta fuera de una transacción no puede ser visto ".

  Redis transacción no lo hace la atomicidad de la garantía: Redis misma transacción si hay un incumplimiento de una orden de marcha, todavía se ejecutará los comandos posteriores, no hay reversión.

 

  

  2. Comando

 

  Múltiples, Exec, Descarte y reloj Redis comandos asuntos relacionados.
  Multi: marcar el inicio de un bloque de transacción. comando múltiples para permitir una transacción, siempre devuelve OK. Después de la ejecución de múltiples, el cliente puede continuar enviando al servidor de cualquier número de comandos que no se ejecutará inmediatamente, pero será colocado en una cola, cuando se invoca el comando Exec, se ejecutarán todos los comandos de colas. Por otro lado, llamando a Descartar, el cliente puede vaciar cola de transacciones, y renunciar a control del cumplimiento.

  Exec: ejecutar todos los comandos dentro de un bloque de transacción. comando Reply es una matriz, cada elemento en el orden de ejecución de transacción array respuesta generada. Entre ellos, los mismos elementos de la orden y el orden en el comando de respuesta enviada. Cuando el cliente se encuentra en los asuntos del Estado, todos los comandos de entrada devuelve una respuesta comandos contenidos estado en cola (respuesta de estado), éstos se ponen en cola se ejecutarán cuando se invoca el comando Exec.

  Descartar: Cancelar la transacción, renunciando a todos los comandos en un bloque de transacción. Al realizar el comando Descartar, se abandonará la transacción, la cola de transacciones se borra, y el cliente puede retirarse del estado de la transacción.

  Ver: seguimiento de un número de clave o, si este o estos otros cambios son la ejecución de comandos clave antes de la transacción, la transacción será interrumpida.

  Unwatch: Cancelar comando reloj para controlar todas Clave de.

 

 

  

  3. Ejemplo

  3.1. Ejemplos de ejecución normal

  En primer lugar, vaciar el contenido de la base de datos, ver el contenido para ver la base de datos está vacía. Multi continuación, abrir un negocio, la creación de dos clave, el valor del valor, subdivisión de control Exec. Cuando vemos la ejecución de la transacción, y devuelve los resultados de dos comandos. Al consultar la base de datos para guardar dos contenido de datos normal.

   

  3.2. Ejemplo abandonar Asuntos

  A continuación, vamos a tratar de abandonar la transacción de ejemplo, primero vaciar el contenido de la base de datos, ver el contenido para ver la base de datos está vacía. Multi continuación, abrir un negocio, la creación de dos clave, valor Valor en este momento, se ejecuta el comando Descartar para abandonar la operación. Al mirar a la base de datos en el aire, podemos ver que la base de datos está vacía.

  

  3.3 todos los ejemplos de culpa

  Toda la culpa se refiere a lo que es? Ahí es donde hay un comando de error de tiempo de compilación, no se ejecutarán toda la serie de comandos.

  

  3.4. Head acreedores ejemplo de la injusticia

  Injusticia acreedores cabeza medios ¿qué es? Ahí es donde hay un problema con el funcionamiento de un comando en la serie de comandos se ejecutará ningún problema, un problema de orden no se ha ejecutado correctamente.

  

  3.5. Monitoreo del reloj

  comando de reloj puede proporcionar un registro de entrada y conjunto (CAS) actúa como una transacción Redis. Ver serán monitoreados las llaves, y si van a encontrar la clave ha sido alterado. Si al menos uno de los monitoreados clave Exec se modifica antes de la ejecución, a continuación, toda la transacción será cancelada, devoluciones Exec nula de respuesta para indicar que la operación ha fallado.

  Aquí tenemos unos saldos de cuenta de tarjeta de crédito y la deuda como un ejemplo:

  En primer saldo de la cuenta inicial de 100, la deuda es cero. 20 Consumo, saldos de cuentas en un 20, 20 aumento de la deuda. En primer reloj para controlar los saldos de cuenta, a continuación, abra la transacción en los saldos de cuentas y las operaciones de deuda.

  Cuando no hay tapón de manipulación, los resultados normales de los saldos de cuenta 80, 20 de la deuda.

   

  Cuando el reloj para controlar los saldos de cuenta, saldos de cuentas tienen Gasser manipulación, tales como top-100 a la cuenta, los saldos de las cuentas cambiado a 180, y luego ejecutar una serie de comandos, ejecutar una transacción, el resultado sería la falta de adecuada operación de actualización.

   

  

  4. Resumen

  我们发现 Redis 对于事务,部分支持,不能像SQL Server等关系数据库的强一致性。Watch指令,类似乐观锁,事务提交时,如果Key的值已被别的客户端改变,比如某个List已被别的客户端Push/Pop过了,整个事务队列都不会被执行。通过Watch命令在事务执行之前监控多个Keys,倘若在Watch之后有任何Key的值发生了改变,Exec命令执行的事务都将被放弃,同时返回Nullmulti-bulk应答以通知调用者事务执行失败。

 

  至此Redis事务介绍完毕,有不当地方,欢迎指正!

 

Supongo que te gusta

Origin www.cnblogs.com/henxiao25/p/12640172.html
Recomendado
Clasificación