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

相关内容

热门资讯

黑科技脚本!wepoke是可以... 黑科技脚本!wepoke是可以软件,微扑克使用方法,第三方教程(有挂存在)-哔哩哔哩;亲真的是有正版...
9分钟熟悉!智星菠萝有挂吗,h... 9分钟熟悉!智星菠萝有挂吗,hhpoker辅助器(透视)安装教程(果真有挂)1、玩家可以在智星菠萝有...
黑科技代打!wpk微扑克外挂事... 黑科技代打!wpk微扑克外挂事件,wepoke挂真的,透牌教程(有人有挂)-哔哩哔哩;1.wpk微扑...
六分钟透明挂!wepoker游... 六分钟透明挂!wepoker游戏安装教程,wpk插件辅助(透视)2025新版教程(有挂细节)1、在w...
黑科技神器!wpk真的有挂,w... 黑科技神器!wpk真的有挂,wpk德州有挂,微扑克教程(详细教程)-哔哩哔哩;wpk真的有挂软件透明...
7分钟发现!aapoker透视... 7分钟发现!aapoker透视软件,悦扑克脚本(透视)插件教程(有挂秘籍)1、aapoker透视软件...
重大通报!微扑克辅助器是真的,... 重大通报!微扑克辅助器是真的,来玩德州app有挂,专业教程(有挂秘诀)-哔哩哔哩;亲真的是有正版授权...
六分钟普及!约局吧开挂神器是真... 六分钟普及!约局吧开挂神器是真的吗,epoker免费透视脚本(透视)揭秘教程(揭秘有挂)1、起透看视...
终于知道!微扑克靠谱,aa p... 终于知道!微扑克靠谱,aa poker有外挂,2025新版技巧(存在有挂)-哔哩哔哩;aa poke...
第九分钟晓得!we-poker... 第九分钟晓得!we-poker有人玩吗,wepoker模拟器哪个好用(透视)2025新版技巧(有挂功...