当前位置: 首页 > news >正文

做网站赚钱还是做app赚钱免费提供网站

做网站赚钱还是做app赚钱,免费提供网站,舟山注册公司,wordpress会员主题在数据处理的世界里#xff0c;事务#xff08;Transaction#xff09;是一个不可或缺的概念。它们确保了在一系列操作中#xff0c;要么所有的操作都成功执行#xff0c;要么都不执行。这就像是一个“全有或全无”的规则#xff0c;保证了数据的一致性和完整性。 今天事务Transaction是一个不可或缺的概念。它们确保了在一系列操作中要么所有的操作都成功执行要么都不执行。这就像是一个“全有或全无”的规则保证了数据的一致性和完整性。 今天我们就来聊聊Redis事务的使用看看如何通过它来提升我们的数据操作效率和安全性。 一、Redis事务的概念 Redis 事务的本质是一组命令的集合。事务支持一次执行多个命令一个事务中所有命令都会被序列化。在事务执行过程会按照顺序串行化执行队列中的命令其他客户端提交的命令请求不会插入到事务执行命令序列中。 总结来说 redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。 Redis事务没有隔离级别的概念 批量操作在发送 EXEC 命令前被放入队列缓存并不会被实际执行也就不存在事务内的查询要看到事务里的更新事务外查询不能看到。 Redis不保证原子性 Redis中单条命令是原子性执行的但事务不保证原子性且没有回滚。事务中任意命令执行失败其余的命令仍会被执行。 redis事务的执行阶段 开始事务(multi)。命令入队。执行事务exec 二、Redis事务优缺点 对于Redis事务的概念我们已经有了基本的了解下面我们再来看看它都有哪些优缺点。 优点 一次性按顺序执行多个Redis命令不受其他客户端命令请求影响 事务中的命令要么都执行(命令间执行失败互相不影响)要么都不执行(比如中间有命令语法错误) 缺点 事务执行时不能保证原子性 命令入队每次都需要和服务器进行交互增加带宽 注意 当事务中命令语法使用错误时最终会导致事务执行不成功即事务内所有命令都不执行 当事务中命令知识逻辑错误就比如给字符串做加减乘除操作时只能在执行过程中发现错误这种事务执行中失败的命令不影响其他命令的执行。 三、Redis事务相关命令 Redis事务可以通过一系列命令来执行多个操作并确保这些操作可以原子性地执行。以下是Redis事务的相关命令及其作用 MULTI 开启一个事务。在调用此命令后Redis 会将后续的命令逐个放入队列中直到接收到 EXEC 命令为止。 EXEC 执行事务中的所有操作命令。一旦调用 EXEC 命令Redis 会原子性地执行队列中的所有命令。 DISCARD 取消事务放弃执行事务块中的所有命令。如果不想继续执行事务中的操作可以使用 DISCARD 命令来清除当前事务队列。 WATCH 监视一个或多个键如果在事务执行之前这些键被其他命令所改动那么事务将会被打断。 UNWATCH 取消所有由 WATCH 命令监视的键。如果不想继续监视某些键可以使用 UNWATCH 命令来取消监视。 需要注意的是在事务执行过程中其他客户端提交的命令请求不会插入到事务执行命令序列中这保证了事务的隔离性。同时Redis 事务提供了批量操作缓存的功能即在发送 EXEC 命令前所有操作都会被放入队列缓存。 四、Redis事务的使用 使用Redis事务的步骤如下 使用MULTI命令开启一个事务。 在事务中执行需要的命令如SET、GET等。 使用EXEC命令提交事务将事务中的命令一次性发送给Redis服务器执行。 如果需要取消事务可以使用DISCARD命令。 下面通过一些示例来讲解一下这些命令的使用方法 1、正常执行 192.168.xxx.21:6379 multi OK 192.168.xxx.21:6379 set aa AA QUEUED 192.168.xxx.21:6379 set bb BB QUEUED 192.168.xxx.21:6379 set cc CC QUEUED 192.168.xxx.21:6379 set dd DD QUEUED 192.168.xxx.21:6379 exec 1) OK 2) OK 3) OK 4) OK 192.168.xxx.21:6379 get aa AA首先通过执行multi命令开始一个事务块。然后依次执行了四个set命令将键aa、“bb”、“cc和dd分别设置为对应的值AA”、“BB”、“CC和DD”。 每个set命令执行后返回的结果为QUEUED表示该命令已被加入到事务队列中等待执行。 接下来通过执行exec命令来提交事务一次性执行事务队列中的所有命令。执行结果为每个命令的返回值即OK。最后通过执行get aa命令获取键aa的值返回结果为AA。 2、取消事务 192.168.xxx.21:6379 multi OK 192.168.xxx.21:6379 set aa 11 QUEUED 192.168.xxx.21:6379 set ee EE QUEUED 192.168.xxx.21:6379 discard OK 192.168.xxx.21:6379 get aa AA 192.168.xxx.21:6379 get ee (nil) 192.168.xxx.21:6379示例代码中首先通过执行multi命令开始一个事务块。然后依次执行了两个set命令将键aa设置为值11将键ee设置为值EE。每个set命令执行后返回的结果为QUEUED表示该命令已被加入到事务队列中等待执行。 接下来通过执行discard命令来取消事务放弃执行事务块内的所有命令。执行结果为OK。 最后通过执行get aa命令获取键aa的值返回结果为AA。而执行get ee命令获取键ee的值时由于之前已经取消了事务所以返回结果为(nil)表示该键不存在。 你还在苦恼找不到真正免费的编程学习平台吗?可以试试【云端源想】课程视频、知识库、微实战、云实验室、一对一咨询……你想要的全部学习资源这里都有重点是现在还是免费的点这里即可查看 3、事务队列中存在命令错误 如果在事务队列中存在命令性错误类似于java编译性错误则执行EXEC命令时所有命令都不会执行 192.168.xxx.21:6379 multi OK 192.168.xxx.21:6379 set aa 22 QUEUED 192.168.xxx.21:6379 set bb 33 QUEUED 192.168.xxx.21:6379 setq cc 44 (error) ERR unknown command setq 192.168.xxx.21:6379 set ff FF QUEUED 192.168.xxx.21:6379 exec (error) EXECABORT Transaction discarded because of previous errors. 192.168.xxx.21:6379 get ff (nil) 192.168.xxx.21:6379 get bb BB 192.168.xxx.21:6379首先通过执行multi命令开始一个事务块。然后依次执行了三个set命令将键aa设置为值22将键bb设置为值33将键cc设置为值44。每个set命令执行后返回的结果为QUEUED表示该命令已被加入到事务队列中等待执行。 然而在执行第三个set命令时出现了错误。因为Redis中并没有名为setq的命令所以返回结果为(error) ERR unknown command ‘setq’。 接下来通过执行exec命令来提交事务一次性执行事务队列中的所有命令。由于之前已经出现了错误导致事务被中断所以执行结果为(error) EXECABORT Transaction discarded because of previous errors.。 最后通过执行get ff命令获取键ff的值时由于事务被中断所以返回结果为(nil)“表示该键不存在。而执行get bb命令获取键bb的值时由于事务被中断所以返回结果为BB”。 4、事务队列中存在语法错误 如果在事务队列中存在语法性错误类似于java的1/0的运行时异常则执行EXEC命令时其他正确命令会被执行错误命令抛出异常。 192.168.xxx.21:6379 multi OK 192.168.xxx.21:6379 incr aa QUEUED 192.168.xxx.21:6379 set ff FF QUEUED 192.168.xxx.21:6379 set bb 22 QUEUED 192.168.xxx.21:6379 exec 1) (error) ERR value is not an integer or out of range 2) OK 3) OK 192.168.xxx.21:6379 get bb 22 192.168.xxx.21:6379 get ff FF 192.168.xxx.21:6379错误原因字符串不能累加1 5、watch监控 watch 命令可以监控一个或多个键一旦有其中一个键被修改被删除后面的事务就不会执行了。监控一直持续到 EXEC 命令事务中的命令是在exec之后才执行的所以在multi命令后可以修改watch监控的键值 假设我们通过watch命令在事务执行之前监控了多个Keys倘若在watch之后有任何Key的值发生了变化exec命令执行的事务都将被放弃同时返回Null multi-bulk应答以通知调用者事务执行失败。 (1)、执行watch不执行multi、exec 192.168.xxx.21:6379 get aa AA 192.168.xxx.21:6379 watch aa OK 192.168.xxx.21:6379 set aa 11 OK 192.168.xxx.21:6379 get aa 11 192.168.xxx.21:6379(2)、执行 watch 命令通知执行 MULTI、exec 192.168.xxx.21:6379 set aa Aa OK 192.168.xxx.21:6379 get aa Aa 192.168.xxx.21:6379 multi OK 192.168.xxx.21:6379 set aa 11 QUEUED 192.168.xxx.21:6379 exec (nil) 192.168.xxx.21:6379 get aa Aa 192.168.xxx.21:6379(3)、exec 执行之后会自动执行 UNWatch 命令撤销监听操作 192.168.xxx.21:6379 set aa Aa OK 192.168.xxx.21:6379 get aa Aa 192.168.xxx.21:6379 multi OK 192.168.xxx.21:6379 set aa 11 QUEUED 192.168.xxx.21:6379 exec (nil) 192.168.xxx.21:6379 get aa Aa 192.168.xxx.21:6379 set aa 11 OK 192.168.xxx.21:6379 get aa 11 192.168.xxx.21:6379(4) 、unwatch撤销监听 192.168.xxx.21:6379 get bb BBB 192.168.xxx.21:6379 watch bb OK 192.168.xxx.21:6379 multi OK 192.168.xxx.21:6379 unwatch QUEUED 192.168.xxx.21:6379 set bb 222 QUEUED 192.168.xxx.21:6379 exec 1) OK 2) OK 192.168.xxx.21:6379 get bb 222 192.168.xxx.21:6379以上就是Redis事务的概念及相关命令的使用Redis事务是一个非常强大的工具它可以帮助我们在处理数据的时候保持数据的一致性和完整性。通过使用Redis事务可以让我们的数据操作更高效、更安全。 希望这篇文章能够帮助你更好地理解和使用Redis事务
http://www.pierceye.com/news/181321/

相关文章:

  • 分享惠网站怎么做旅游网站网页设计模板代码
  • 2018年做网站赚钱那些网站做的非常好看的
  • 兰州网站建设哪家专业wordpress耗时
  • 手机网站解析域名网站那个做的比较好
  • 上海专业网站建设公司电话企业营销网站建设的基本步骤
  • 中国专业的网站建设知乎wordpress
  • 广州网站设计公司兴田德润活动这是我做的网站吗
  • html5做网站一线全屋定制10大品牌
  • 广州百度网站建设公司wordpress免费媒体库管理
  • 郑州网站建设炉石在线a视频网站一级a做片
  • 网站越来越难做做杂志的模板下载网站有哪些
  • 怎么做化妆品网站内容规划免费做网站的网页
  • seo站外优化平台网站建设程序流程
  • 凡科轻站官网做个简单的企业小网站
  • 动漫做h免费网站有哪些系统开发是做什么的
  • 企业做网站流程全国地推公司排名
  • 揭阳新闻最新消息常用的seo工具推荐
  • 网站方案策划中国最大的博客网站
  • 网站建设加空间食品包装设计ppt
  • 搭建一个网站 优帮云张家口远大建设集团网站
  • wordpress本地视频播放器苏州谷歌seo
  • 银川网站建设有哪些16岁做分期网站
  • 制作网站对话框火车票网站建设多少
  • 怎么问客户做不做网站设计一个简单的广告
  • 佛山 网站关键词优化trel域名
  • 哪家网站建设好大连房产网
  • 企业做推广哪些网站比较好兰州有做百度网站的吗
  • 网站建设和管理规则自己建网站的流程
  • 网站的前期推广广州网站建设加盟
  • 网站灰色 代码深圳的深圳的网站建设公司