zoukankan      html  css  js  c++  java
  • Spring RedisTemplate操作-事务操作(9)

    @Autowired
        @Qualifier("redisTemplate")
        private RedisTemplate<String, String> stringredisTemplate;
    
        public void flushdb() {
            stringredisTemplate.execute(new RedisCallback<Object>() {
                public String doInRedis(RedisConnection connection) throws DataAccessException {
                    connection.flushDb();
                    return "ok";
                }
            });
        }
    
    //    @Transactional           //哪怕加了这个注解spring的配置文件里redistemplate配置也要开启事务支持
        public void mutli() {
            flushdb();
            ValueOperations<String, String> vo = stringredisTemplate.opsForValue();
            stringredisTemplate.setEnableTransactionSupport(true);
    
            stringredisTemplate.multi();
            vo.set("b", "1");
            vo.increment("b", 2);
            vo.get("b");
            stringredisTemplate.discard();
    
            stringredisTemplate.multi();
            vo.set("a", "1");
            vo.increment("a", 2);
            vo.get("a");
            out(stringredisTemplate.exec());
            // System.out.println("-------");
            
            stringredisTemplate.setEnableTransactionSupport(false);
            List<Object> rs = null;
            do{
                stringredisTemplate.watch("a");
                stringredisTemplate.multi();
                vo.increment("a", 2);
                vo.increment("a", 2);
                rs = stringredisTemplate.exec();
            }while(rs == null);//多重检测,直到执行成功。
            
            
            
        }
    
        public void out(String str) {
            System.out.println(str);
        }
    
        public void out(Collection list) {
            System.out.println(list);
        }
    
        public void out(long num) {
            System.out.println(num);
        }
    
        public void out(boolean num) {
            System.out.println(num);
        }
    
        public void out(DataType num) {
            System.out.println(num);
        }
  • 相关阅读:
    Hibernate 缓存机制
    Java 对象的串行化(Serialization)
    Java HashMap的死循环
    大牛给计算机专业学生的 7 个建议
    手机的未来
    Java虚拟机类加载机制
    JAVA中的数组是对象吗?
    JAVA中toString方法的作用
    探索哪个进程使磁盘I/O升高
    Linux运维之如何查看目录被哪些进程所占用,lsof命令、fuser命令
  • 原文地址:https://www.cnblogs.com/aoeiuv/p/6761688.html
Copyright © 2011-2022 走看看