前言
一般单机或者单数据库的项目可能规模比较小,适应的场景也比较有限,平台的访问量和业务量都较小,业务ID的生成方式比较原始但是够用,它并没有给这样的系统带来问题和瓶颈,所以这种情况下我们并没有对此给予太多的关注。
2025年04月25日
一般单机或者单数据库的项目可能规模比较小,适应的场景也比较有限,平台的访问量和业务量都较小,业务ID的生成方式比较原始但是够用,它并没有给这样的系统带来问题和瓶颈,所以这种情况下我们并没有对此给予太多的关注。
2025年04月25日
"又双叒叕是缓存击穿?" "Redis不就是个缓存吗?" "为啥这个功能还要用Redis实现?"
如果你的团队里还有人这么想,那这篇文章就是为他们准备的!Redis不仅仅是一个缓存工具,它简直就是一把瑞士军刀,能解决你想象不到的各种问题。
2025年04月25日
生成唯一订单号是在设计系统时候经常会遇到的一个问题,生成唯一订单号的方法有很多,为了适应不同的场景和性能,选择的方法也会不一样,有些复杂的系统会有多套这种唯一编码生成方式。
利用数据库自增序列,比如新建一张表,专门插入数据,获取新增记录的主键值,为了订单号的可读性,可以由
2025年04月25日
有些情况,我们不能使用数据库自带的主键生成机制(例如:使用分表的策略,采用数据库自增主键将使得每张物理表的主键彼此独立,这不是我们想要的)。
由于这段时间redis使用挺多的,现在就看看如何生成主键。
我们初步设想ID的生成规则:
根据每一个库的每一张表组合成一个key, 然后依靠redis进行生成ID
1. 首先定义了一个生成id的接口类
2. 定义一个子类,实现我们的接口
3. 或使用Spring的redisTemplate实现,这就是接口的好处了,扩展另一种实现很方便。
2025年04月25日
一、前言
但一旦涉及到分库分表,就会引申出分布式系统中唯一主键ID的生成问题,永不迁移数据和避免热点的文章中要求需要唯一ID的特性:
2025年04月25日
无论做什么类型的系统,都会牵涉到一个唯一流水号生成的问题,这个流水号可能是不规则的,也可能是有特定的有序格式。
在系统开发中比较常用的有数据库生成、缓存生成、数据库+缓存。这里就上述情况做一些简要记录。
2025年04月25日
什么是递增?
如:第一次生成的ID为12,下一次生成的ID是13,再下一次生成的ID是14。这个就是生成ID递增。
什么是趋势递增?
如:在一段时间内,生成的ID是递增的趋势。如:再一段时间内生成的ID在【0,1000】之间,过段时间生成的ID在【1000,2000】之间。但在【0-1000】区间内的时候,ID生成有可能第一次是12,第二次是10,第三次是14。
2025年04月25日
系统唯一ID是我们在设计一个系统的时候常常会遇见的问题,也常常为这个问题而纠结。生成ID的方法有很多,适应不同的场景、需求以及性能要求。所以有些比较复杂的系统会有多个ID生成的策略。下面就介绍一些常见的ID生成策略。
最常见的方式。利用数据库,全数据库唯一。
优点:
1)简单,代码方便,性能可以接受。