在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

Redis中事务操作的命令有哪些

115次阅读
没有评论

共计 3651 个字符,预计需要花费 10 分钟才能阅读完成。

自动写代码机器人,免费开通

丸趣 TV 小编给大家分享一下 Redis 中事务操作的命令有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

命令

multi 与 exec

命令行

127.0.0.1:6379  multi
127.0.0.1:6379  incr total
QUEUED
127.0.0.1:6379  incr len
QUEUED
127.0.0.1:6379  exec
1) (integer) 2
2) (integer) 2
127.0.0.1:6379  get total
127.0.0.1:6379  get len
 2

lettuce 实例

 @Test
 public void testMultiExec(){
 RedisClient client = RedisClient.create( redis://192.168.99.100:6379/0 
 StatefulRedisConnection String, String  connection = client.connect();
 RedisCommands String, String  syncCommands = connection.sync();
 syncCommands.set( hello , 1 
 syncCommands.set( world , 2 
 syncCommands.multi();
 syncCommands.incr( hello 
 syncCommands.incr( world 
 //DefaultTransactionResult[wasRolledBack=false,result=[1, 2, 1, 3, 1]]
 TransactionResult transactionResult = syncCommands.exec();
 System.out.println(transactionResult);
 System.out.println(syncCommands.get( hello));
 System.out.println(syncCommands.get( world));
 }

部分执行

命令行

127.0.0.1:6379  multi
127.0.0.1:6379  set a hello
QUEUED
127.0.0.1:6379  set b world
QUEUED
127.0.0.1:6379  incr a
QUEUED
127.0.0.1:6379  set c part
QUEUED
127.0.0.1:6379  exec
1) OK
2) OK
3) (error) ERR value is not an integer or out of range
4) OK
127.0.0.1:6379  get a
 hello 
127.0.0.1:6379  get b
 world 
127.0.0.1:6379  get c
 part

lettuce 实例

 @Test
 public void testMultiExecError(){
 RedisClient client = RedisClient.create( redis://192.168.99.100:6379/0 
 StatefulRedisConnection String, String  connection = client.connect();
 RedisCommands String, String  syncCommands = connection.sync();
 syncCommands.multi();
 syncCommands.set( a , hello 
 syncCommands.set( b , world 
 syncCommands.incr( a 
 syncCommands.set( c , part 
 //DefaultTransactionResult[wasRolledBack=false,result=[OK, OK, io.lettuce.core.RedisCommandExecutionException: ERR value is not an integer or out of range, OK, 1]]
 TransactionResult transactionResult = syncCommands.exec();
 System.out.println(transactionResult);
 System.out.println(syncCommands.get( a));
 System.out.println(syncCommands.get( b));
 System.out.println(syncCommands.get( c));
 }

multi 与 discard

命令行

127.0.0.1:6379  set sum 1
127.0.0.1:6379  multi
127.0.0.1:6379  incr sum
QUEUED
127.0.0.1:6379  discard
127.0.0.1:6379  get sum
 1

lettuce 实例

 @Test
 public void testMultiDiscard(){
 RedisClient client = RedisClient.create( redis://192.168.99.100:6379/0 
 StatefulRedisConnection String, String  connection = client.connect();
 RedisCommands String, String  syncCommands = connection.sync();
 syncCommands.incr( key1 
 syncCommands.multi();
 syncCommands.incr( key1 
 // 需要有 multi 才可以执行 discard,成功返回 OK
 String result = syncCommands.discard();
 System.out.println(result);
 System.out.println(syncCommands.get( key1));
 }

check and set

 @Test
 public void testWatch(){
 RedisClient client = RedisClient.create( redis://192.168.99.100:6379/0 
 StatefulRedisConnection String, String  connection = client.connect();
 RedisCommands String, String  syncCommands = connection.sync();
 String key =  key 
 syncCommands.watch(key);
 //another connection
 StatefulRedisConnection String, String  conn2 = client.connect();
 RedisCommands String, String  syncCommands2 = conn2.sync();
 syncCommands2.set(key,  a 
 syncCommands.multi();
 syncCommands.append(key,  b 
 //DefaultTransactionResult [wasRolledBack=true, responses=0]
 TransactionResult transactionResult = syncCommands.exec();
 System.out.println(transactionResult);
 System.out.println(syncCommands.get(key));
 }

reids 提供 multi exec/discard 指令,类似 open commit/rollback transaction,不过 exec 遇到类型操作等错误时不会滚,该成功执行的命令还是成功执行,该失败的还是失败

multi exec 保证的是,只要 exec 命令有执行成功,则事务中一系列的命令都能执行,如果 exec 因为网络等问题,server 端没有接收到,则事务中的一系列命令都不会被执行

discard 需要在有调用 multi 的前提下才能使用,该命令会清空事务队列等待执行的命令

redis 提供 watch 指令,可以配合 multi exec 来使用,可以实现类似数据库的乐观锁的机制,一旦 watch 的 key 被其他 client 有更新,则整个 exec 操作失败

看完了这篇文章,相信你对“Redis 中事务操作的命令有哪些”有了一定的了解,如果想了解更多相关知识,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-16发表,共计3651字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 亚洲国产精品综合久久网络 | 午夜精品 | 免费福利影院 | 韩国免费a级片 | 亚洲99久久久久综合 | 国产成人高清亚洲综合 | 99精品视频免费在线观看 | 久草精品在线播放 | 一区二区播放 | 麻豆视频一区二区 | 成人欧美一区二区三区视频不卡 | 亚洲精品国产精品乱码不卡√ | 国产精品婷婷久久爽一下 | 国产精品免费视频一区 | 一本无码中文字幕在线观 | 顶级欧美熟妇xx | 国产98在线 | 欧美 | 国产精品熟女在线视频 | 国产福利社 | 免费碰碰视频 | 四虎最新永久免费视频 | 日韩国产欧美 | 日韩免费高清视频 | 欧美网站在线 | 亚洲精品乱码久久久久久 | 亚洲色图国产精品 | 国产乱码卡二卡三卡老狼 | xx性欧美| 久久成年片色大黄全免费网站 | 天堂а√在线中文在线新版 | 亚洲精品无码mv在线观看网站 | 亚洲欧洲无码一区二区三区 | 久久色精品 | 三级在线视频 | 国产亚洲午夜高清国产拍精品 | 国产精品va在线观看无码不卡 | 免费四虎永久在线精品 | 一级毛片一级毛片一级毛片 | 无圣光私拍一区二区三区 | 99热久久久这里只有精品免费 | 久久久久亚洲av无码专区电影 |