Redisson分布式锁运用示例

该博客展示了如何使用Redisson实现分布式锁来确保数据处理的安全性。在对每条规则进行处理时,首先尝试获取基于线程ID和tagId的分布式锁,然后从Redis获取日期和时间信息,并根据规则进行计算。计算完成后,将结果保存到数据库,并释放锁。
摘要由CSDN通过智能技术生成
/**
 * 对单独每一条规则进行处理
 * 对redis进行分布式加锁
 *
 * @param rule 单一的规则
 */
private void calc(CrvOrgRule rule) {
    Integer tagId = rule.getTagId();
    long start = System.currentTimeMillis();
    RLock lock = redissonClient.getLock(String.valueOf(Thread.currentThread().getId()).concat(tagId.toString()));
    boolean lockRes = false;
    try {
        //尝试获取redis分布式锁
        lockRes = lock.tryLock(4000, TimeUnit.MICROSECONDS);
        if (lockRes) {
            String dt = "20211104"; //TODO 后面从redis中获取
            String ht = "14"; //TODO 后面从redis中获取
            List<CrvResult> crvResultList;
            if (StringUtils.isBlank(rule.getRecConfigs())) {
                //如果规则配置是空,则走默认分区规则计算
                crvResultList = calcDefaultRule(tagId, rule.getLabelIds());
            } else {
                //有配置规则,则走分区规则计算
                crvResultList = calcRule(rule, dt, ht);
            }
            long end = S
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值