zoukankan      html  css  js  c++  java
  • Redis---事务和Wtach

    1. 概述

      Redis通过 MULTI, EXEC / WATCH 等命令来实现事务.

      事务提供一种将多个命令请求打包, 然后一次性、按顺序的执行多个命令的机制.

      并且在事务执行期间, 服务器不会中断事务而改去执行其他客户端的命令请求, 他将事务中的所有命令执行完毕, 然后才去处理其他客户端的命令请求.

      Redis的事务不支持 回滚 

    2. 事务

    > multi
    OK
    > incr books
    QUEUED
    > incr books
    QUEUED
    > exec
    (integer) 1
    (integer) 2

    2.1 基本使用 

    1. multi 命令表示事务的开始
    2. 之后的命令会被放入一个事务队列, 是一个 multiCmd 类型的数组, 它以先进先出的方式保存入队的命令. 
    3. 当执行 exec 命令时, 服务器会遍历客户端的事务队列, 执行队列中保存的所有命令.
    4. 当执行 discard 命令时, 表示放弃执行这个事务, 事务队列中的所有命令都不会执行.

    2.2 入队错误和执行错误

    1. 当事务因为命令入队发生错误时, 事务中的所有命令都不会执行;
    2. 当事务执行时发生错误, 错误的命令不会影响其它命令的执行;

    2.3 优化

      Redis 事务在发送每个指令到事务缓存队列时都要经过一次网络读写,当一个事务内部的指令较多时,需要的网络 IO 时间也会线性增长。

      所以通常 Redis 的客户端在执行事务时都会结合 pipeline 一起使用,这样可以将多次 IO 操作压缩为单次 IO 操作.

    3. watch

      watch 命令是一个乐观锁, 它可以在 exec 前执行, 监视任意数量的数据库键, 并在 exec  执行时, 检查被监视的数据库键是否被修改, 如果至少有一个数据库键被修改过, 则服务器拒绝执行这个事务, 并返回一个代表事务执行失败的空回复( nil )

  • 相关阅读:
    JAVA-初步认识-第三章-语句-switch
    JAVA-初步认识-第三章-if语句练习-星期和季节
    第三章-数据类型(3.3)
    JAVA-初步认识-第三章-局部代码块
    JAVA-初步认识-第三章-语句-if格式3
    JAVA-初步认识-第三章-语句-if格式1的演示
    JAVA-初步认识-第三章-语句-if格式2
    微信小程序图片使用示例
    推荐一款稳定快速免费的前端开源项目 CDN 加速服务
    基于mpvue的小程序项目搭建的步骤
  • 原文地址:https://www.cnblogs.com/virgosnail/p/9544347.html
Copyright © 2011-2022 走看看