zoukankan      html  css  js  c++  java
  • Redis事务

    Redis中的事务是一组命令的集合。一个事务中的命令要么都执行,要么都不执行。事务在执行期间,服务器不会中断事务而去执行其它客户端的命令请求,它会将事务中的所有命令都执行完,然后才去处理其它客户端的命令请求。

    1.multi——开启事务

    通过multi命令开启事务,它总是返回OK。MULTI执行之后,客户端可以继续向服务器发送任意多条命令, 这些命令不会立即被执行,而是被放到一个队列中,当 EXEC命令被调用时, 所有队列中的命令才会被执行。

    2.命令入队列

    之后所有的命令都会放入事务队列中,并不会立刻执行。

    如果客户端发送的命令为EXEC,DISCARD,WATCH,MULTI四个命令中的其中一个,服务器会立刻执行这个命令。

    对于这四个命令以外的其它命令,服务器并不会立刻执行,而是将这个命令放入一个事务队列中,然后向客户端返回QUEUED回复。

    3.exec——执行事务

    当客户端向服务器发送EXEC命令时,会立刻执行。

    服务器会遍历这个客户端的事务队列,执行队列中保存的所有命令,最后将执行命令所得的结果全部返回给客户端。

    4.DISCARD——放弃执行

    当执行 DISCARD 命令时, 事务会被放弃, 事务队列会被清空,并且客户端会从事务状态中退出。

    watch命令

    watch命令是一个乐观锁,可以为Redis事务提供 check-and-set (CAS)行为。它可以在EXEC命令执行前监视任意数量的键(key),在执行EXEC命令时,检查被监视的键是否已经被修改过,一旦发现被监视的键至少有一个被修改,服务器将拒绝执行事务,并向客户端返回代表事务执行失败的空回复(nil-reply)。

    执行EXEC命令后会取消对所有键的监控,如果不想执行事务中的命令可以使用UNWATCH命令来取消监控。

  • 相关阅读:
    将微信小程序上传到公司的账号下
    当HBuilderX运行时打不开微信开发者工具时
    vue路径中去掉#
    初次快速使用git
    小米商城应用效果(阴影效果)
    如何使用hover点击一个元素使另一个颜色变色
    Open browser failed!! Please check if you have installed the browser correct
    vue中解决跨域问题
    vue中如何实现点击动态切换样式
    es5中数组的迭代方法 forEach,map,filter,some,every
  • 原文地址:https://www.cnblogs.com/xibushijie/p/13387309.html
Copyright © 2011-2022 走看看