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

相关内容

热门资讯

透视曝光!德普之星辅助工具如何... 透视曝光!德普之星辅助工具如何打开(透视)wepoker代打辅助,教程方式(证实有挂)-哔哩哔哩1)...
今天下午!德普之星app安卓版... 今天下午!德普之星app安卓版破解版,hardrock透视工具(透视)阶段教程(真是真的有挂)暗藏猫...
突发!pokemmo辅助器脚本... 突发!pokemmo辅助器脚本下载,德普之星辅助器怎么用(透视)练习教程(一贯是有挂)1)德普之星辅...
透视普及!wepoker透视最... 透视普及!wepoker透视最简单三个步骤(透视)红龙poker辅助平台,教程模块(有挂助手)-哔哩...
随着!wepoker免费辅助器... 随着!wepoker免费辅助器,wepoker免费脚本弱密码(透视)指南书教程(一贯真的有挂)wep...
透视透视!游戏辅助制作器,20... 透视透视!游戏辅助制作器,2025微乐小程序黑科技(开挂)果然真的有挂(有挂解密)-哔哩哔哩1、上手...
昨日!德州透视插件,pokem... 昨日!德州透视插件,pokemmo手机脚本辅助器(透视)秘籍教程(竟然真的有挂)亲,关键说明,pok...
透视普及!werplan透视挂... 透视普及!werplan透视挂(透视)wejoker辅助软件价格,教程阶段(果真有挂)-哔哩哔哩1、...
推出新举措!新玉海楼茶苑辅助器... 推出新举措!新玉海楼茶苑辅助器,wepoker有辅助工具吗,绝活教程(有挂讲解)-哔哩哔哩运新玉海楼...
透视挂透视!阿当比鸡辅助器怎么... 透视挂透视!阿当比鸡辅助器怎么用,新道游房间(开挂)竟然真的是有挂(有挂技巧)-哔哩哔哩;1、阿当比...