创建全局唯一id的几种方式对比
1.存储过程生成
2.利用redis( incr) 原子性自增操作生成id. incr 是redis的原子操作(jredis.incr("global_id")),redis一旦重启,需重置初始值,不重置从0开始自增(需判断值>20000000)
3.利用mybatis+表自增id创建唯一id

1.存储过程生成
select * from spu_sku_sequence
create table spu_sku_sequence(
type varchar(50) not null, //业务类型 spu,sku
current_value bigint DEFAULT 0, //当前生成的最大值
PRIMARY key (type)
);
set global log_bin_trust_function_creators=true;
create function get_next_value(p_type varchar(50))
returns integer(11)
begin
declare next_value integer;
set next_value=0;
start TRANSACTION;
select current_value into next_value from spu_sku_sequence where type =p_type for update;
set next_value=next_value + 1;
update spu_sku_sequence set current_value = next_value where type =p_type;
return next_value;
COMMIT;
end;
select get_next_value("spu")
2.利用redis( incr) 原子性自增操作生成id. incr 是redis的原子操作(jredis.incr("global_id")),redis一旦重启,需重置初始值,不重置从0开始自增(需判断值>20000000)
select get_next_value("sku")

浙公网安备 33010602011771号