基于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;     } } 

相关内容

热门资讯

德普之星辅助功能如何打开!we... 德普之星辅助功能如何打开!wepoker有用吗(透视)确实真的有挂(实用技巧)1、wepoker有用...
透视数据!德普之星透视辅助io... 透视数据!德普之星透视辅助ios,智星德州有脚本吗,wepoke教程(有挂解密);1、德普之星透视辅...
透视游戏!德扑之星有没有透视挂... 此外,数据分析德州(德扑之星有没有透视挂)辅助神器app还具备辅助透视行为开挂功能,通过对客户德扑之...
红龙poker作弊指令!aap... 红龙poker作弊指令!aapoker万能辅助器(透视)果然存在有挂(科技教程)1、超多福利:超高返...
透视最新!wpk辅助器,aap... 透视最新!wpk辅助器,aapoker透视怎么用,靠谱教程(有挂技巧)1、玩家可以在aapoker透...
透视中牌率!HHpoker有挂... 大家肯定在之前HHpoker有挂吗一直输或者HHpoker有挂吗一直输中玩过透视中牌率!HHpoke...
红龙poker作弊指令!wep... 红龙poker作弊指令!wepoker私人局规律(透视)一贯存在有挂(透牌教程)1、红龙poker作...
透视中牌率!aapoker免费... 透视中牌率!aapoker免费透视脚本,德普之星透视辅助ios,攻略方法(有挂方法);1、德普之星透...
透视神器!德扑之星网页版透视辅... 透视神器!德扑之星网页版透视辅助,德州小辅助2024年官方正版(详细辅助高科技教程);支持2-10人...
wpk辅助插件!aapoker... wpk辅助插件!aapoker插件下载(透视)果然真的是有挂(德州教程)一、aapoker插件下载A...