<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Windows下搭建Reids本地叢集,可參考https://www.jb51.net/article/242520.htm
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
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的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); } }
由於此工具類需要放在 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並使用redis生成全域性唯一索引ID的文章就介紹到這了,更多相關springboot redis生成全域性唯一索引ID內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45