zzbajie / yii2-snowflake
yii2-snowflake
dev-master
2022-04-01 16:12 UTC
Requires
- yiisoft/yii2: ~2.0.0
This package is auto-updated.
Last update: 2024-09-30 01:16:33 UTC
README
yii2-snowflake
安装
安装此扩展的最佳方式是通过composer。
运行以下命令之一:
php composer.phar require --prefer-dist zzbajie/yii2-snowflake "*"
或者添加以下内容到您的composer.json
文件的require部分:
"zzbajie/yii2-snowflake": "*"
到
使用方法
扩展安装完成后,只需在代码中通过以下方式使用它:
//生成订单号 $redis = Yii::$app->redis; $redis->select(9); $snowflake = new Snowflake($redis, Yii::$app->params['snowFlake']['machineId'], Yii::$app->params['snowFlake']['startTime'], 'order'); return (string)$snowflake->generate();
snowflake
该版本使用了PHP7语法,并使用REDIS作为锁机制
算法介绍
snowflake是一种分布式ID生成器,由Twitter出品,通过添加时间戳相对值、数据标志、机器标志和递增序列号,确保ID的有序性和唯一性。
符号位(1bit)- 时间戳相对值(41bit)- 数据标志(5bit)- 机器标志(5bit)- 递增序号(12bit) 0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000
版本概述
- 本版将数据标识和机器标识合并为机器标识。即:10bit,0-1023
- 本版使用REDIS确保单位毫秒内ID自增并防止并发重复
其他补充
- ID长度:
- 标准算法ID长度为18或19位。当时间差超过约7.5年时,就会达到19位
- 机器标识:
- 机器标识可以写入php-fpm.conf文件中。例如:
env[MACHINE_ID]=10
。修改完成后并重启php-fpm后,可以在项目中通过getenv('MACHINE_ID')
获取机器标识
- 机器标识可以写入php-fpm.conf文件中。例如: