springboot集成redis并生成全局唯一索引ID的方法
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,本篇内容主要讲解"springboot集成redis并生成全局唯一索引ID的方法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"springboot集成re
千家信息网最后更新 2025年11月09日springboot集成redis并生成全局唯一索引ID的方法
本篇内容主要讲解"springboot集成redis并生成全局唯一索引ID的方法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"springboot集成redis并生成全局唯一索引ID的方法"吧!
springboot集成 redis
pom文件
org.springframework.boot spring-boot-starter-data-redis
application.yaml文件
spring: #redis 缓存 redis: connect-timeout: 180000 #连接超时时间 lettuce: pool: #连接池最大连接数 max-active: 8 #最大阻塞等待时间(负数表示没限制) max-wait: 1 #连接池最大空闲连接 max-idle: 5 #连接池最小空闲连接 min-idle: 0 #单机模式# database: 0 # 集群模式该参数不生效# host: 127.0.0.1# port: 6379 #集群模式开启 cluster: nodes: 127.0.0.1:6379,127.0.0.1:7001,127.0.0.1:7002,127.0.0.1:7003,127.0.0.1:7004,127.0.0.1:7005 max-redirects: 3 password:
测试验证
调用该接口,返回 22,则集成redis成功;

redis生成全局唯一索引ID
使用redis的RedisAtomicLong可以生成分布式自增的ID值;直接上代码:
import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;import com.wd.basic.common.support.component.CustomIdGenerator;import lombok.extern.slf4j.Slf4j;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.core.StringRedisTemplate;import javax.annotation.Resource;/** * mybatis 配置 * * @author 上官婉儿 * @date 2022/03/21 */@Slf4j@Configurationpublic class MybatisPlusConfig { @Resource private StringRedisTemplate stringRedisTemplate; @Bean public IdentifierGenerator idGenerator() { return new CustomIdGenerator(stringRedisTemplate); }}由于此工具类需要放在 common包,所以在调用系统上新增 MybatisPlusConfig,在项目启动时候,将bean(stringRedisTemplate)送进到CustomIdGenerator中(我是这样理解的,可能不能这么解释)
import cn.hutool.core.date.DatePattern;import cn.hutool.core.date.DateUtil;import cn.hutool.core.util.StrUtil;import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;import com.wd.basic.common.exception.BasicException;import com.wd.basic.common.exception.enums.IDGeneratorExceptionEnum;import org.springframework.data.redis.core.StringRedisTemplate;import org.springframework.data.redis.support.atomic.RedisAtomicLong;import java.util.Date;import java.util.Objects;import java.util.concurrent.TimeUnit;/** * 自定义id发电机 * * @author 上官婉儿 * @date 2022/03/21 */public class CustomIdGenerator { private static final String I_KEY_PREFIX = "IKey:generator"; public static final int KEY_EXPIRE_TIME = 2; private final StringRedisTemplate stringRedisTemplate; public CustomIdGenerator(StringRedisTemplate stringRedisTemplate) { this.stringRedisTemplate = stringRedisTemplate; } /** * 年月日时分秒 +6位 redis返回的自增序列(如000001、000002、000003...) * redis返回的自增序列 规则: * 根据传入的 key(相当于字段名)生成自增的序列,2s后重新自增; * 由于redis的incr原子性,也能保证每次返回的结果不会出现相同的值, */ @Override public String nextUUID(Object entity) { String bizKey = entity.getClass().getName(); String dateStr = DateUtil.format(new Date(), DatePattern.PURE_DATETIME_MS_FORMATTER); RedisAtomicLong counter = new RedisAtomicLong(I_KEY_PREFIX + bizKey, Objects.requireNonNull(stringRedisTemplate.getConnectionFactory())); counter.expire(KEY_EXPIRE_TIME, TimeUnit.SECONDS); long redisId = counter.incrementAndGet(); String redisIdStr = StrUtil.fillBefore(String.valueOf(redisId), '0',6); return dateStr + redisIdStr; }}测试验证
开始10个线程,跑1000次:
结果如下,2s可以照常跑1000条完无重复值

改成10000试试, 还是跑到了 10000,原来是 每一条线程进去后,走这个代码 counter.expire(KEY_EXPIRE_TIME, TimeUnit.SECONDS);将这个key的失效时间重新设置了一下,不过2s生成100000条已经够用了,大家可以根据系统业务,自定义缩短或增加失效时间;
到此,相信大家对"springboot集成redis并生成全局唯一索引ID的方法"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
生成
全局
方法
索引
时间
最大
序列
模式
代码
内容
文件
空闲
系统
线程
结果
集群
上官
学习
测试
验证
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
用友通链接数据库
spring服务器管理
武汉网络安全职责
北京今点万维网络技术有限公司
软件开发产品行业前景分析
软件开发页面分享
数据库中的用户定义
数据仓库 关系型数据库
1620v3 服务器内存
宁夏广播电视台 网络安全
网络安全朋友圈泄密卡通图
思科服务器怎样进入bios
软件开发项目人员招聘要求
数据库 主键 属性
德惠智能网络技术咨询有哪些
鸿蒙连接服务器
华为无法连接服务器请检查网络
完美国际单机版账号数据库在哪
华为服务器内存保护技术分哪几种
互联网金融科技公司名单
基岩版花雨庭服务器端口
中国始终是国际网络安全的
数据库一次取500天序列
南京老酣网络技术
想做软件开发选什么专业
教育软件开发图片
5G网络安全哲学思考
网络技术进阶
网络安全如何打击不良网站
斗地主软件开发是怎样形成的