您现在的位置是:网站首页> 编程资料编程资料
Redis 串行生成顺序编码的方法实现_Redis_
2023-05-27
447人已围观
简介 Redis 串行生成顺序编码的方法实现_Redis_
场景:针对于分布式并发环境,易出现编码生成重复问题
方案特点:串行操作可避免阻塞加锁,处理效率更高
具体解决方案
private final static String ENTERPRISE_CODE = "enterpriseCode"; @Resource private RedisTemplate redisTemplate; private String generateCode() { String code; if (!redisTemplate.hasKey(ENTERPRISE_CODE)) { // Mybatis-Plus 查询数据库中企业编码最大值 EnterprisePO enterprise = enterpriseService.getOne( Wrappers.lambdaQuery() .orderByDesc(EnterprisePO::getCode) .last("limit 1")); // 缓存企业编码 if (ObjectUtils.isNotEmpty(enterprise)) { // 如果 key 不存在才 set 避免并发重复 set,setIfAbsent() 属于原子操作 redisTemplate.opsForValue().setIfAbsent(ENTERPRISE_CODE, Long.valueOf(enterprise.getCode())); // 也可设置 key 过期时间,此处设置为 1 天 // redisTemplate.opsForValue().setIfAbsent(ENTERPRISE_CODE, Long.valueOf(enterprise.getCode()), 1, TimeUnit.DAYS); } } // 以递增方式缓存最新编码 Long number = redisTemplate.opsForValue().increment(ENTERPRISE_CODE, 1L); // %06d 意为保留 6 位数,不足六位数字前面补 0 code = String.format("%06d", number); return code; }
到此这篇关于 Redis 串行生成顺序编码的方法实现的文章就介绍到这了,更多相关 Redis 串行生成顺序编码内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
您可能感兴趣的文章:
相关内容
- 浅谈Redis 中的过期删除策略和内存淘汰机制_Redis_
- 一文搞懂Redis中String数据类型_Redis_
- Redis做预定库存缓存功能设计使用_Redis_
- sentinel支持的redis高可用集群配置详解_Redis_
- redis sentinel监控高可用集群实现的配置步骤_Redis_
- redis调用二维码时的不断刷新排查分析_Redis_
- 基于Redis6.2.6版本部署Redis Cluster集群的问题_Redis_
- Redis分布式锁的7种实现_Redis_
- Windows下Redis x64的安装与使用教程详解_Redis_
- Windows下搭建Redis集群的方法步骤_Redis_