基于Redis实现全局唯一id
创始人
2024-11-12 01:05:16
0

业务需求 

全局id生成器需要满足一下特点

 高可用,唯一性,高性能,递增性,安全性

id的组成分为三部分:符号位,时间戳,序列号。 

如何将这三部分合在一起作为long返回呢?答案是使用位运算,我们可以这样想,将时间戳 左移32位,低位都补0正好空出了序列号的位置,将序列号位置与自增长count进行与运算就可。

@Component public class RedisIdWorker {     @Autowired     private StringRedisTemplate redisTemplate;     /**      * 开始时间戳      */     private static final long BEGIN_TIMESTAMP = 1704067200L;     /**      * 序列号位数      * @param prefix      * @return      */     private static final long COUNT_BITS = 32L;     public long nextId(String prefix) {         //生成时间戳         LocalDateTime now = LocalDateTime.now();         long nowSecond = now.toEpochSecond(ZoneOffset.UTC);         long timestamp = nowSecond - BEGIN_TIMESTAMP;         //生成序列数         //获取当前日期,精确到天         String date = now.format(DateTimeFormatter.ofPattern("yyyy:MM:dd"));         //自增长         Long count = redisTemplate.opsForValue().increment("icr" + prefix + ":" + date);         //拼接返回         return timestamp << COUNT_BITS | count;     } } 

相关内容

热门资讯

秘籍辅助!雀姬手游辅助(辅助挂... 秘籍辅助!雀姬手游辅助(辅助挂)其实真的有辅助挂(有挂头条)1、游戏颠覆性的策略玩法,独创攻略技巧玩...
现场直击!wepoker有没有... 现场直击!wepoker有没有挂,werplan脚本,窍门教程(确实有挂)wepoker有没有挂是不...
攻略辅助!吉祥填大坑辅助(辅助... 攻略辅助!吉祥填大坑辅助(辅助挂)一直是有辅助教程(有挂神器)1、吉祥填大坑辅助公共底牌简单,吉祥填...
黑科技代打!wpk辅助购买,w... 黑科技代打!wpk辅助购买,wepoker怎么提高运气,步骤教程(有挂规律)1、wepoker怎么提...
机巧辅助!方片十三张辅助器软件... 机巧辅助!方片十三张辅助器软件(辅助挂)其实是有辅助技巧(有挂技巧)1、点击下载安装,方片十三张辅助...
总结辅助挂!wepoker私人... 总结辅助挂!wepoker私人局开挂视频,aapoker透视脚本入口,教程书教程(有挂神器)1、完成...
讲义辅助!全民内蒙古辅助(辅助... 讲义辅助!全民内蒙古辅助(辅助挂)总是是真的有辅助软件(有挂详细)1)全民内蒙古辅助有没有挂:进一步...
据悉!sohoo poker辅... 据悉!sohoo poker辅助器,hhpoker怎么开透视,指南教程(存在有挂)小薇(辅助器软件下...
总结辅助!福州天天开心辅助(辅... 总结辅助!福州天天开心辅助(辅助挂)总是确实有辅助攻略(有挂神器)1、福州天天开心辅助模拟器是什么优...
第三方辅助!德普之星辅助工具如... 第三方辅助!德普之星辅助工具如何设置,哈糖大菠萝助手,指南书教程(存在有挂)1、实时德普之星辅助工具...