数据库 ID 生成方案:Redis

使用 Redis 来生成分布式 ID,其实和利用 Mysql 自增 ID 类似,可以利用 Redis 中的 incr 命令来实现原子性的自增与返回,比如:

127.0.0.1:6379> set id 1   // 初始化自增 ID 为1
OK
127.0.0.1:6379> incr id   // 增加1,并返回
(integer) 2
127.0.0.1:6379> incr id   // 增加1,并返回
(integer) 3

使用 redis 的效率是非常高的,但是要考虑持久化的问题。Redis 支持 RDB 和 AOF 两种持久化的方式。

RDB 持久化相当于定时打一个快照进行持久化,如果打完快照后,连续自增了几次,还没来得及做下一次快照持久化,这个时候 Redis 挂掉了,重启 Redis 后会出现 ID 重复。

AOF 持久化相当于对每条写命令进行持久化,如果 Redis 挂掉了,不会出现 ID 重复的现象,但是会由于 incr 命令过多,导致重启恢复数据时间过长。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Redis高可用概述 在介绍Redis高可用之前,先说明一下在Redis的语境中高可用的含义。 我们知道,在w...
    空语阅读 1,612评论 0 2
  • 企业级redis集群架构的特点 海量数据 高并发 高可用 要达到高可用,持久化是不可减少的,持久化主要是做灾难恢复...
    lucode阅读 2,223评论 0 7
  • NOSQL类型简介键值对:会使用到一个哈希表,表中有一个特定的键和一个指针指向特定的数据,如redis,volde...
    MicoCube阅读 4,080评论 2 27
  • 因前两天服务器挂掉了,导致项目使用的redis数据库异常,丢失了部分数据,为了能够更好的使用Redis,结合网上的...
    呦_小宋啊阅读 2,305评论 2 9
  • 1.1 资料 ,最好的入门小册子,可以先于一切文档之前看,免费。 作者Antirez的博客,Antirez维护的R...
    JefferyLcm阅读 17,133评论 1 51