zoukankan      html  css  js  c++  java
  • redis事务 学习笔记

    0 环境

    • 系统环境: centos7
    • 编辑器: xshell
    • IED:IDEA

    1 事务概念

    思维导图
    new CallRedisDemo().execute 往期代码有 不在追叙

    2 实现

    1 在redis服务器中测试

    在这里插入图片描述
    在这里插入图片描述

    2 代码实现

    public class TransactionTest {
        public static void main(String[] args) {
            // 往期代码有 不在追叙
            new CallRedisDemo().execute(jedis -> {
                jedis.set("money", "1000");
                Integer money = new TransactionTest().addMoney(jedis, "money", 2000);
                System.out.println(money);
            });
        }
    
        /**
         * 事务的使用
         * @param jedis
         * @param key
         * @param money
         * @return
         */
        private Integer addMoney(Jedis jedis, String key, Integer money) {
            while (true){
                // 监视键
                jedis.watch(key);
    
                // 将字符串转化为数字 相加
                int newMoney = Integer.parseInt(jedis.get(key)) + money;
    
                // 开启事务
                Transaction multi = jedis.multi();
                multi.set(key, String.valueOf(newMoney));
                // 执行事务
                List<Object> exec = multi.exec();
                // 若是存在 跳出 否则循环执行
                if (null != exec) {
                    break;
                }
    
            }
    
            // 转化为整型
            return Integer.parseInt(jedis.get(key));
        }
    }
    
    • 正常操作
      在这里插入图片描述
    • 异常操作
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
    作者:以罗伊
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    rpc
    route
    ROLLBACK
    rmdir -删除空目录
    rm
    rlogin
    REVOKE
    resolver
    RESET
    repquota
  • 原文地址:https://www.cnblogs.com/my-ordinary/p/12769349.html
Copyright © 2011-2022 走看看