Redis使用increment方法返回null的原因以及解决方案

public static void main(String[] args) {
   
        redisTemplate.setEnableTransactionSupport(true);  //开启事务支持
        redisTemplate.multi();  //标记事务块的开始
        redisTemplate.opsForValue().set("name","zs");
        redisTemplate.opsForValue().set("pass","123");
        redisTemplate.exec();   //由exec命令原子性的执行
    }

开启了redis的事务支持,使用spring的事务注解@Transactional在执行increment 方法时会返回 null。

有以下两种解决方案:

  1. 每次redis的事务操作完毕之后,关闭redis事务支持,再执行@Transactional中的redis命令(多线程的情况下会有弊端);
  2. 创建两个redisTemplate,一个专门执行redis事务,一个用来执行普通redis命令;
@Configuration
public class RedisConfig {
   

    private RedisConnectionFactory redisConnectionFactory;

    public RedisConfig(RedisConnectionFactory redisConnectionFactory){
   
        this.redisConnectionFactory = redisConnectionFactory;
    }

    @Bean("redisTemplate")      //无事务的bean
    public StringRedisTemplate redisTemplate(){
   
        StringRedisTemplate stringRedisTemplate = new StringRedisTemplate();
        stringRedisTemplate.setConnectionFactory(redisConnectionFactory);
        return stringRedisTemplate;
    }

    @Bean("redisTemplateTransaction")   //有事务的bean
    public StringRedisTemplate redisTemplateTransaction(){
   
        StringRedisTemplate stringRedisTemplate = new StringRedisTemplate();
        stringRedisTemplate.setEnableTransactionSupport(true);
        stringRedisTemplate.setConnectionFactory(redisConnectionFactory);
        return stringRedisTemplate;
    }
}

转载文章:Redis使用increment方法返回null的原因以及解决方案

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-05 16:06:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-05 16:06:03       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-05 16:06:03       87 阅读
  4. Python语言-面向对象

    2023-12-05 16:06:03       96 阅读

热门阅读

  1. dialog打开时重新渲染

    2023-12-05 16:06:03       59 阅读
  2. .NET8 依赖注入

    2023-12-05 16:06:03       52 阅读
  3. 服务器是否稳定怎么看

    2023-12-05 16:06:03       54 阅读
  4. entos定时自动备份mysql

    2023-12-05 16:06:03       51 阅读
  5. conda和pip常用命令整理

    2023-12-05 16:06:03       55 阅读
  6. 1292:宠物小精灵之收服

    2023-12-05 16:06:03       54 阅读
  7. CentOS7 防火墙常用命令

    2023-12-05 16:06:03       55 阅读
  8. 1022. 宠物小精灵之收服,二维花费的背包

    2023-12-05 16:06:03       54 阅读
  9. 14.Oracle中RegExp_Like 正则表达式基本用法

    2023-12-05 16:06:03       46 阅读
  10. 单元测试一(理论)-云计算2023.11-云南农业大学

    2023-12-05 16:06:03       65 阅读
  11. Kubernetes 常用命令

    2023-12-05 16:06:03       54 阅读
  12. [Python] 将文字转化到图片上显示

    2023-12-05 16:06:03       62 阅读