最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot集成redis并使用redis生成全局唯一索引ID

 更新時(shí)間:2022年03月28日 16:30:14   作者:這世界那么多上官婉兒  
本文主要介紹了springboot集成redis并使用redis生成全局唯一索引ID,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

部署redis

Windows下搭建Reids本地集群,可參考http://www.fzitv.net/article/242520.htm

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 #連接超時(shí)時(shí)間
    lettuce:
      pool:
        #連接池最大連接數(shù)
        max-active: 8
        #最大阻塞等待時(shí)間(負(fù)數(shù)表示沒(méi)限制)
        max-wait: 1
        #連接池最大空閑連接
        max-idle: 5
        #連接池最小空閑連接
        min-idle: 0
    #單機(jī)模式
#    database: 0 # 集群模式該參數(shù)不生效
#    host: 127.0.0.1
#    port: 6379
    #集群模式開(kāi)啟
    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:

測(cè)試驗(yàn)證

調(diào)用該接口,返回 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
@Configuration
public class MybatisPlusConfig {

    @Resource
    private StringRedisTemplate stringRedisTemplate;

    @Bean
    public IdentifierGenerator idGenerator() {
        return new CustomIdGenerator(stringRedisTemplate);
    }
}

由于此工具類(lèi)需要放在 common包,所以在調(diào)用系統(tǒng)上新增 MybatisPlusConfig,在項(xiàng)目啟動(dòng)時(shí)候,將bean(stringRedisTemplate)送進(jìn)到CustomIdGenerator中(我是這樣理解的,可能不能這么解釋?zhuān)?/p>

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發(fā)電機(jī)
 *
 * @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;
    }

    /**
     * 年月日時(shí)分秒 +6位 redis返回的自增序列(如000001、000002、000003...)
     * redis返回的自增序列 規(guī)則:
     * 根據(jù)傳入的 key(相當(dāng)于字段名)生成自增的序列,2s后重新自增;
     * 由于redis的incr原子性,也能保證每次返回的結(jié)果不會(huì)出現(xiàn)相同的值,
     */
    @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;
    }
}

測(cè)試驗(yàn)證

開(kāi)始10個(gè)線程,跑1000次:

結(jié)果如下,2s可以照常跑1000條完無(wú)重復(fù)值

改成10000試試, 還是跑到了 10000,原來(lái)是 每一條線程進(jìn)去后,走這個(gè)代碼 counter.expire(KEY_EXPIRE_TIME, TimeUnit.SECONDS);將這個(gè)key的失效時(shí)間重新設(shè)置了一下,不過(guò)2s生成100000條已經(jīng)夠用了,大家可以根據(jù)系統(tǒng)業(yè)務(wù),自定義縮短或增加失效時(shí)間;

 到此這篇關(guān)于springboot集成redis并使用redis生成全局唯一索引ID的文章就介紹到這了,更多相關(guān)springboot redis生成全局唯一索引ID內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot 如何實(shí)時(shí)刷新靜態(tài)文件

    SpringBoot 如何實(shí)時(shí)刷新靜態(tài)文件

    這篇文章主要介紹了SpringBoot如何實(shí)時(shí)刷新靜態(tài)文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 簡(jiǎn)單談?wù)凧ava中的方法和方法重載

    簡(jiǎn)單談?wù)凧ava中的方法和方法重載

    下面小編就為大家?guī)?lái)一篇簡(jiǎn)單談?wù)凧ava中的方法和方法重載。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • IDEA2021.2配置docker如何將springboot項(xiàng)目打成鏡像一鍵發(fā)布部署

    IDEA2021.2配置docker如何將springboot項(xiàng)目打成鏡像一鍵發(fā)布部署

    這篇文章主要介紹了IDEA2021.2配置docker如何將springboot項(xiàng)目打成鏡像一鍵發(fā)布部署,本文圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-09-09
  • Java中用POI實(shí)現(xiàn)將數(shù)據(jù)導(dǎo)出到Excel

    Java中用POI實(shí)現(xiàn)將數(shù)據(jù)導(dǎo)出到Excel

    這篇文章主要介紹了Java中用POI實(shí)現(xiàn)將數(shù)據(jù)導(dǎo)出到Excel,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • spring實(shí)現(xiàn)bean對(duì)象創(chuàng)建代碼詳解

    spring實(shí)現(xiàn)bean對(duì)象創(chuàng)建代碼詳解

    這篇文章主要介紹了spring實(shí)現(xiàn)bean對(duì)象創(chuàng)建代碼詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2017-12-12
  • Java多線程及分布式爬蟲(chóng)架構(gòu)原理解析

    Java多線程及分布式爬蟲(chóng)架構(gòu)原理解析

    這篇文章主要介紹了Java多線程及分布式爬蟲(chóng)架構(gòu)原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Spring配置與依賴(lài)注入基礎(chǔ)詳解

    Spring配置與依賴(lài)注入基礎(chǔ)詳解

    依賴(lài)注入(Dependency?Injection)和控制反轉(zhuǎn)(Inversion?of?Control)是同一個(gè)概念。具體含義是:當(dāng)某個(gè)角色(可能是一個(gè)Java實(shí)例,調(diào)用者)需要另一個(gè)角色(另一個(gè)Java實(shí)例,被調(diào)用者)的協(xié)助時(shí),在?傳統(tǒng)的程序設(shè)計(jì)過(guò)程中,通常由調(diào)用者來(lái)創(chuàng)建被調(diào)用者的實(shí)例
    2022-08-08
  • 智能手表開(kāi)發(fā)API接口

    智能手表開(kāi)發(fā)API接口

    這篇文章主要介紹了智能手表開(kāi)發(fā)API接口,使用圖靈機(jī)器人平臺(tái)接口實(shí)現(xiàn)天氣預(yù)報(bào),非常簡(jiǎn)單實(shí)用,這里推薦給大家。
    2015-03-03
  • Elasticsearch聚合查詢(xún)概念及字段類(lèi)型示例

    Elasticsearch聚合查詢(xún)概念及字段類(lèi)型示例

    這篇文章主要為大家介紹了Elasticsearch聚合查詢(xún)概念及字段類(lèi)型示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • JavaFx實(shí)現(xiàn)拼圖游戲

    JavaFx實(shí)現(xiàn)拼圖游戲

    這篇文章主要為大家詳細(xì)介紹了JavaFx實(shí)現(xiàn)拼圖游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09

最新評(píng)論

南京市| 塔河县| 固始县| 来凤县| 中江县| 义马市| 敦化市| 汉源县| 团风县| 象州县| 屯昌县| 镇康县| 丹寨县| 礼泉县| 巴青县| 九寨沟县| 芜湖市| 株洲市| 吉安县| 宁国市| 五原县| 湘西| 工布江达县| 潜山县| 富蕴县| 延川县| 固安县| 龙川县| 灵丘县| 嵩明县| 霸州市| 通许县| 东乡| 福建省| 庆元县| 黎城县| 莲花县| 韶关市| 九台市| 招远市| 称多县|