springboot集成redis并生成全局唯一索引ID的方法
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容主要讲解"springboot集成redis并生成全局唯一索引ID的方法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"springboot集成re
千家信息网最后更新 2026年11月01日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安全错误
数据库的锁怎样保障安全
上海卓越科技互联网
深圳九邦互联网科技有限公司
互联网和科技技术
互联网科技公司华为
互联网医疗科技
九亚互联网科技
佩信高科技互联网
开启互联网科技时代小说
成都玖崟互联网科技有限公司乐商圈怎么样
玖二柒互联网科技公司待遇
互联网科技产品
成都互联网科技公司100强
移动互联网科技公司
苏州铭阳互联网科技有限公司
呼和浩特新华互联网科技学院
翼展科技 首家互联网医院
2021互联网科技公司排名
江苏互联网智能科技软件
35岁以上互联网科技行业
上海互联网科技园景观
互联网科技汛
互联网科技公司招聘
民营互联网公司国防科技
浙南科技城互联网大厦建设工程
互联网数据科技专业
卓翼科技产业互联网合作
济南有互联网科技公司吗
美国互联网科技实力
21世纪互联网科技成就
珠海东科互联网科技有限公司