?Redis 串行生成顺序编码的方法实现

 更新时间:2022年04月03日 10:23:48   作者:这个杀手冷死了  
本文主要介绍了?Redis 串行生成顺序编码的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

场景:针对于分布式并发环境,易出现编码生成重复问题

方案特点:串行操作可避免阻塞加锁,处理效率更高

具体解决方案

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.<EnterprisePO>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 解决key的乱码问题,并清理详解

    redis 解决key的乱码问题,并清理详解

    这篇文章主要介绍了redis 解决key的乱码问题,并清理详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • Redis 的 GeoHash详解

    Redis 的 GeoHash详解

    这篇文章主要介绍了Redis 的 GeoHash详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Redis中的配置文件,数据持久化,事务

    Redis中的配置文件,数据持久化,事务

    这篇文章主要介绍了Redis中的配置文件,数据持久化,事务问题,具有很好的参考价值,希望对大家有所帮助。
    2022-12-12
  • Redis全量复制与部分复制示例详解

    Redis全量复制与部分复制示例详解

    这篇文章主要给大家介绍了关于Redis全量复制与部分复制的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Redis爬虫具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • 将MongoDB作为Redis式的内存数据库的使用方法

    将MongoDB作为Redis式的内存数据库的使用方法

    这篇文章主要介绍了将MongoDB作为Redis式的内存数据库的使用方法,原理其实只是将内存虚拟作为磁盘,需要的朋友可以参考下
    2015-06-06
  • Redis为什么快如何实现高可用及持久化

    Redis为什么快如何实现高可用及持久化

    这篇文章主要介绍了Redis为什么快如何实现高可用及持久化,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • 如何在centos中安装redis插件bloom-filter

    如何在centos中安装redis插件bloom-filter

    布隆过滤器在第一次add的时候自动创建基于默认参数的过滤器,Redis还提供了自定义参数的布隆过滤器,下面这篇文章主要给大家介绍了关于如何在centos中安装redis插件bloom-filter的相关资料,需要的朋友可以参考下
    2021-11-11
  • redis的主从配置方法详解

    redis的主从配置方法详解

    今天为大家介绍下linux系统下redis的主从配置方法,Linux系统下的redis的主从配置方法非常简单下面是具体的操作步骤
    2018-09-09
  • Redis不同数据类型的命令语句详解

    Redis不同数据类型的命令语句详解

    这篇文章主要介绍了Redis不同数据类型的命令语句,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10
  • Redis教程(十):持久化详解

    Redis教程(十):持久化详解

    这篇文章主要介绍了Redis教程(十):持久化详解,本文讲解了Redis提供了哪些持久化机制、RDB机制的优势和劣势、AOF机制的优势和劣势、其它等内容,需要的朋友可以参考下
    2015-04-04

最新评论

?


http://www.vxiaotou.com