配置地址:
redisson: # Redis服务地址 如果集群使用","进行分割 server-address: redis://${spring.redis.host}:${spring.redis.port} database: ${spring.redis.database}
创建配置类:
@ConfigurationProperties(prefix = "redisson") @Configuration public class RedissonConfig { /** Redis服务地址 如果集群使用","进行分割 */ private String serverAddress; private Integer database; public String getServerAddress() { return serverAddress; } public void setServerAddress(String serverAddresss) { this.serverAddress = serverAddresss; } public Integer getDatabase() { return database; } public void setDatabase(Integer database) { this.database = database; } }
注册redission Bean:
/** * RedissonClient * @return */ @Bean public RedissonClient redissonClient(){ String splitChar = ","; String serverAddress = redissonConfig.getServerAddress(); String[] serverAddressArr = serverAddress.split(splitChar); Config config = new Config(); if (serverAddressArr.length == 1) { //单例redis config.useSingleServer() .setAddress(redissonConfig.getServerAddress()) .setDatabase(redissonConfig.getDatabase()); } else { //集群redis config.useClusterServers().addNodeAddress(serverAddressArr); } return Redisson.create(config); }
防止重复初始化:
** * 初始化告警统计记录 保证告警统计不会被重复初始化 * * @param areaId 部门id * @throws BizException */ public void initWarningStatisticsSafe(String areaId) throws BizException { //创建锁名称 String lockName = generateInitWarningStatisticsLockName(areaId); RLock lock = redisClient.getLock(lockName); try { //尝试获取锁 (最多尝试10秒,获取到后15秒后释放锁) boolean isAcquireLock = lock.tryLock(10, 15, TimeUnit.SECONDS); if (!isAcquireLock) { logger.error("初始化消息统计 --- 获取锁失败 lockName = " + lockName); throw new BizException("系统异常"); } else { try { //查询【告警统计】 (能够查询到最新的数据,因为默认隔离级别是read committed List<WarningStatisticsPO> warningStatisticsPOS = warningStatisticsDAO.selectByArea(areaId); if (CollectionUtils.isEmpty(warningStatisticsPOS)) { //如果部门不存在告警统计,才进行初始化 initWarningStatistics()会开启一个新事务 warningStatisticsService.initWarningStatistics(areaId); } } finally { //释放锁 (在事务提交后才释放锁。保证其它事务在获取锁后能查询到数据,不会再进行初始化。) lock.unlock(); } } } catch (InterruptedException e) { e.printStackTrace(); } }
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
岱庙资源网 Copyright www.zgmyg.com
暂无“redission分布式锁防止重复初始化问题”评论...
更新日志
2024年05月15日
2024年05月15日
- dnf龙袍套装属性与天空套对比
- 横山菁儿-三国志-燃烧的长江-1993-APE整轨
- [ABC唱片]-《李传韵-琴魂》[K2-018][K2CD]WAV+CUE
- 【ABC唱片】《黃河號子SACD-011》-WAV分轨
- 当《生化危机2:重制版》加入路径追踪:画面真实感显著提升!
- 《哈迪斯2》BOSS不让暂停惹恼玩家:我手柄没电了!
- 《美末》S2艾莉造型首曝:头发留长 成熟了不少
- 邰正宵.2024-重燃爱恋.贰Walk.On【福茂】【FLAC分轨】
- 叶凡.2007-相思【中唱】【WAV+CUE】
- 王永.1997-十二道金牌【鸿心工作室】【WAV+CUE】
- dnf110换装在哪刷
- dnf110新版buff换装在哪里做
- dnf110满级了去哪里刷史诗
- 群星2024《龙年精逊纯银CD[WAV+CUE]
- 刘月宁《扬琴独奏-木兰辞变奏曲》[FLAC+CUE]