广告
返回顶部
首页 > 资讯 > 精选 >springboot集成redis并生成全局唯一索引ID的方法
  • 836
分享到

springboot集成redis并生成全局唯一索引ID的方法

2023-06-29 17:06:01 836人浏览 安东尼
摘要

本篇内容主要讲解“SpringBoot集成redis并生成全局唯一索引ID的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“springboot集成Redis并生成全局唯一索引ID的方法”吧!

本篇内容主要讲解“SpringBoot集成redis并生成全局唯一索引ID的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习springboot集成Redis并生成全局唯一索引ID的方法”吧!

springboot集成 redis

pom文件

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-data-redis</artifactId></dependency>

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成功;

springboot集成redis并生成全局唯一索引ID的方法

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;@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;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;    }        @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次:

springboot集成redis并生成全局唯一索引ID的方法

结果如下,2s可以照常跑1000条完无重复值

springboot集成redis并生成全局唯一索引ID的方法

改成10000试试, 还是跑到了 10000,原来是 每一条线程进去后,走这个代码 counter.expire(KEY_EXPIRE_TIME, TimeUnit.SECONDS);将这个key的失效时间重新设置了一下,不过2s生成100000条已经够用了,大家可以根据系统业务,自定义缩短或增加失效时间;

到此,相信大家对“springboot集成redis并生成全局唯一索引ID的方法”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: springboot集成redis并生成全局唯一索引ID的方法

本文链接: https://www.lsjlt.com/news/325855.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • springboot集成redis并生成全局唯一索引ID的方法
    本篇内容主要讲解“springboot集成redis并生成全局唯一索引ID的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“springboot集成redis并生成全局唯一索引ID的方法”吧!...
    99+
    2023-06-29
  • springboot集成redis并使用redis生成全局唯一索引ID
    部署redis Windows下搭建Reids本地集群,可参考https://www.jb51.net/article/242520.htm springboot集成 redis p...
    99+
    2022-11-13
  • Redis生成全局唯一ID的实现方法
    目录简介:特性:生成规则: ID生成类:测试类:简介: 全局唯一ID生成器是一种在分布式系统下用来生成全局唯一ID的工具 特性: 唯一性高性能安全性高可用递增性 生成规则:...
    99+
    2022-11-13
  • Redis生成分布式系统全局唯一ID的实现
    目录分布式系统全局唯一ID基于Redis INCR 命令生成分布式全局唯一ID采用Redis生成商品全局唯一ID分布式系统全局唯一ID 在互联网系统中,并发越大的系统,数据就越大,数...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作