flashytime/id-generator

基于 Apc 和 MySQL 的 ID 生成器

v1.0.0 2018-05-08 10:51 UTC

This package is not auto-updated.

Last update: 2024-09-25 12:12:29 UTC


README

基于 Apc 和 MySQL 的 ID 生成器,可用于为分片 MySQL 表生成主键。

安装

  • 在您的终端中运行 composer require 命令
composer require flashytime/id-generator
  • 使用 id_generator.sql 创建一个名为 'id_generator' 的 MySQL 表
CREATE TABLE `id_generator` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL COMMENT '名字',
  `current_id` bigint(20) unsigned NOT NULL COMMENT '当前最大ID',
  `step` int(11) unsigned NOT NULL COMMENT '步长',
  `length` int(11) unsigned NOT NULL COMMENT '缓存步长',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='ID生成器';
  • 将配置目录中的 id-generator.php 文件复制到 config/id-generator.php

使用方法

$idGenerator = new \Flashytime\ApcIdGenerator\IdGenerator($config);
$idGenerator->setTable('id_generator');
$id = $idGenerator->getId('test_name');

Laravel 和 Lumen

Laravel 5

config/app.php 中的 providers 数组中添加 ServiceProvider

'providers' => [

	Flashytime\IdGenerator\Provider\LaravelIdGeneratorServiceProvider::class,

]

最后,通过 php artisan vendor:publish 发布配置文件。

Lumen

对于 Lumen,在您的 bootstrap/app.php 中添加以下内容

$app->register(Flashytime\IdGenerator\Provider\LumenIdGeneratorServiceProvider::class);

将配置目录中的 id-generator.php 文件复制到 config/id-generator.php

并在 bootstrap/app.php 中添加以下内容

$app->configure('id-generator');

使用方法

app('id-generator')->setTable('id_generator');
$id = app('id-generator')->getId('test_name');

许可证

MIT