Spring RedisTemplate操作-事务操作(9)

摘要:
}publicvoidout(Stringstr){System.out.println(str);}publicvoidout(集合列表){System.out.println(列表);}publicvoidout(longnum){System.out.println(num);}publicvoidout(booleanum){System.out.println(num);}publicvoidout(DataTypenum){System.out.println(num);}
@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);
    }

免责声明:文章转载自《Spring RedisTemplate操作-事务操作(9)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux终端快速检测网站是否宕机的6个方法nginx面试要点下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

BZOJ1089: [SCOI2003]严格n元树

1089: [SCOI2003]严格n元树 Time Limit: 1 SecMemory Limit: 162 MBSubmit: 762Solved: 387[Submit][Status] Description 如果一棵树的所有非叶节点都恰好有n个儿子,那么我们称它为严格n元树。如果该树中最底层的节点深度为d(根的深度为0),那么我们称它为一...

Delphi Byte数组与Int String之间的相互转换

http://www.cnblogs.com/lcw/p/3352864.html string   string = AnsiString = 长字符串,理论上长度不受限制,但其实受限于最大寻址范围2的32次方=4G字节;   变量Str名字是一个指针,指向位于堆内存的字符序列,字符序列起始于@Str[1],@Str[1]偏移负16个字节的空间存储着字串...

cJSON 使用详解

由于c语言中,没有直接的字典,字符串数组等数据结构,所以要借助结构体定义,处理json。如果有对应的数据结构就方便一些, 如python中用json.loads(json)就把json字符串转变为内建的数据结构处理起来比较方便。     cjson库文件下载:     sourceforge地址     一个重要概念:         在cjson中,js...

基于数据库的vs2019的T4模版代码生成器(一)基于sqlserver数据库

总体介绍 参考文档: https://www.cnblogs.com/laozhang-is-phi/p/9757999.html 只想用 ADO.NET 搭建多层框架,动软代码生成器是一个不错的选择。 T4 (Text Template Transformation Toolkit) 是微软官方在 VisualStudio 2008+ 中开始使用的代码生...

调用支付宝转账接口(单笔)

下面这几个类都是支付宝demo里面的,直接拿过来用就可以 using System.Web; using System.Text; using System.IO; using System.Net; using System; using System.Collections.Generic; namespace Com.Alipay { pu...

vue升级Babel支持可选链和合并空值运算符

一、babel作用: (我偷懒了,直接用官网介绍) Babel 是一个工具链,主要用于将 ECMAScript 2015+ 版本的代码转换为向后兼容的 JavaScript 语法,以便能够运行在当前和旧版本的浏览器或其他环境中。据我所知, 无论是webpack项目还是vite项目都需要使用到babel来编译(.vue)文件。=> vite3支持jsx...