Redisson框架

Redisson框架学习笔记,记录了通过Redisson框架操作Redis,Redisson涉及到的功能很多,可根据需要参考官方文档。

Redisson框架简介

什么是Redisson框架?

Redisson是架设在Redis基础上的一个Java主内存数据网格(In-Memory Data Grid)。在Java实用工具包中常用接口的基础上,为使用者提供了一系列具有分布式特性的常用工具类。

Redisson在基于NIO的Netty框架上,充分利用了Redis键值数据库提供的一系列优势。

简化了分布式环境中程序相互之间的协作。

Redisson框架实现具体步骤

Spring Schedule+Redisson分布式锁实现定时关单流程

用到Redisson中的锁操作。

  1. 添加依赖
    <dependency>
      <groupId>org.redisson</groupId>
      <artifactId>redisson</artifactId>
      <version>2.9.0</version>
    </dependency>
    
    <dependency>
      <groupId>com.fasterxml.jackson.dataformat</groupId>
      <artifactId>jackson-dataformat-avro</artifactId>
      <version>2.9.0</version>
    </dependency>
    
  2. 在common包下新建RedissonManager.java类(@Component),用于生成和管理Redisson对象。
    private Config config = new Config();
    private Redisson redisson = null;
    
    public Redisson getRedisson(){
      return redisson;
    }
    
    private static String redisIp = PropertiesUtil.getProperty("redis.ip");
    private static InteerredisPort=Integer.parseInt(PropertiesUtil.getProperty("redis.port"));
    private static String redis2Ip = PropertiesUtil.getProperty("redis2.ip");
    private static Inteerredis2Port=Integer.parseInt(PropertiesUtil.getProperty("redis2.port"));
    
    //被@PostConstruct修饰的方法会在构造函数之后运行。
    @PostConstruct
    private void init(){
      try{
        config.useSingleServer().setAddress(new StringBuilder().append(redisIp).append(":").append(redisPort).toString());
        redisson = (Redisson)Redisson.create(config);
        log.info("初始化Redisson结束");
      }catch (Exception e){
        log.error("redisson init error",e);
      }
    }
    
  3. 进入CloseOrderTask.java类,通过调用Redisson来实现redis分布式锁。
    @Autowired
    private RedissonManager redissonManager;
    
    @Scheduled(cron="0 */1 * * * ?")
    public void closeOrderTaskV4(){
      RLock lock = redissonManager.getRedisson().getLock(Const.REDIS_LOCK_TASK_LOCK);
      boolean getLock = false;
      try{
        //尝试获得锁时最多等待0秒,5秒释放,使用秒为单位
        if(getLock = lock.tryLock(0,5,TimeUnit.SECONDS)){
            log.info("Redisson获取到分布式锁:{}",Const.REDIS_LOCK.CLOSE_ORDER_TASK_LOCK);
            int hour = Integer.parseInt(PropertiesUtil.getProperty("close.order.task.time.hour","2"));
            iOrderService.closeOrder(hour);
        }else{
            log.info("Redisson没有获取到分布式锁:{}",Const.REDIS_LOCK.CLOSE_ORDER_TASK_LOCK);
        }
      }catch (InterruptedException e){
        log.info("Redisson分布式锁获取异常",e);
      }finally{
        if(){
          if(!getLock){
            return;
          }
          lock.unlock();
          log.info("Redisson分布式释放锁");
        }
      }
    }
    

Redisson框架的相关知识

请访问官方WIKI,里面包含了各种说明和DEMO:
https://github.com/redisson/redisson/wiki/目录

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值