java语言-分布式相关-分布式ID(雪花算法等)
面5笔5Redis ID生成
Redis分布式ID实现主要是通过提供像 INCR 和 INCRBY 这样的自增原子命令,由于Redis单线程的特点,可以保证ID的唯一性和有序性。
这种实现方式,如果并发请求量上来后,就需要集群,不过集群后,又要和传统数据库一样,设置分段和步长。
时间+用redis的incr自增命令(每日从1开始),代码如下:
用redis实现需要注意一点,要考虑到redis持久化的问题。redis有两种持久化方式RDB和AOF
RDB会定时打一个快照进行持久化,假如连续自增但redis没及时持久化,而这会Redis挂掉了,重启Redis后会出现ID重复的情况。
AOF会对每条写命令进行持久化,即使Redis挂掉了也不会出现ID重复的情况,但由于incr命令的特殊性,会导致Redis重启恢复的数据时间过长。
优点:性能不错、每秒10万并发量。生成的 ID 是有序递增的。
缺点:redis 宕机后不可用,RDB重启数据丢失会重复ID。自增,数据量易暴露。