/** * 对单独每一条规则进行处理 * 对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
Redisson分布式锁运用示例
最新推荐文章于 2024-07-31 09:48:24 发布
该博客展示了如何使用Redisson实现分布式锁来确保数据处理的安全性。在对每条规则进行处理时,首先尝试获取基于线程ID和tagId的分布式锁,然后从Redis获取日期和时间信息,并根据规则进行计算。计算完成后,将结果保存到数据库,并释放锁。
摘要由CSDN通过智能技术生成