对于分布式并发下生成唯一ID的方法讨论redis/mysql。

分布式并发下唯一ID的生成规则 (python 多线程模拟并发 ,QPS以秒为单位, 不考虑 python GIL)

1.使用 redis 的 incr (redis 为单线程, 原子性操作)

1.incr 原子性操作即返回加1操作后的值,可直接使用。避免多操作而使用事务。

2.持久性:只有一个key,可开启RDB/AOF,或者判断在nosql key失效时,获取DB表中最后一个生成的id并set写入,保持可持续使用。

3.性能:内存操作,性能优良

4.灾难恢复,数据自动恢复,脚本检测set进最后一个生成的ID

redis> SET mykey "10"

OK

redis> INCR mykey

(integer) 11

redis> GET mykey

"11"

2.使用 mysql 表的唯一自增主键 (可用双实例/物理机 错开id(奇偶数 +1/+2))

1.mysql的原子性,可保证自增列不会产生重复的id

2.持久性:存在于mysql数据表中,持久化于磁盘

3.性能:数据写入操作,可用错开id(+1/+2)双写

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

推荐阅读更多精彩内容

  • 本文将从Redis的基本特性入手,通过讲述Redis的数据结构和主要命令对Redis的基本能力进行直观介绍。之后概...
    kelgon阅读 61,312评论 23 625
  • 转载地址:http://gnucto.blog.51cto.com/3391516/998509 Redis与Me...
    Ddaidai阅读 21,479评论 0 82
  • 1.1 资料 ,最好的入门小册子,可以先于一切文档之前看,免费。 作者Antirez的博客,Antirez维护的R...
    JefferyLcm阅读 17,139评论 1 51
  • 我还是很喜欢你,像红叶化作碎泥,归了故里。 我还是很喜欢你,像微风拂过大海,经久不息; 我还是很喜欢你,像青丝染成...
    今天先生吃药了吗阅读 344评论 2 7
  • 秋天还不错,金黄的叶子,凋零的花。 午后还能晒到暖暖的阳光, 你的发稍在阳光下发着光, 我们就这样隔着阳光。
    木木熹阅读 733评论 17 14