试题
考点

java语言-分布式相关-分布式ID(雪花算法等)

面5笔5

Redis ID生成

前往“校招VIP”小程序,刷题更快
最新校招难题刷题,快来进刷题群吧
解答

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。自增,数据量易暴露。

评论
暂无评论

加载更多