odan/tsid

生成时间可排序标识符 (TSID) 的库。

0.1.0 2022-12-09 08:51 UTC

This package is auto-updated.

Last update: 2024-09-06 13:22:29 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

描述

生成时间可排序标识符 (TSID) 的库。

此库是从 Java 转移到 PHP 的 TSID Creator 的移植。

需求

  • PHP 8.0+

安装

composer require odan/tsid

使用方法

use Odan\Tsid\TsidFactory;

$tsidFactory = new TsidFactory();

$tsid = $tsidFactory->generate();

// 388400145978465528
echo $tsid->toInt();

// 0ARYZVZXW377R
echo $tsid->toString();

数据库使用

MySQL

将 (主/副) 键的数据类型设置为 bigint(20) unsigned

示例

CREATE TABLE `users` (
    `id` bigint(20) unsigned NOT NULL,
    `username` varchar(45) NOT NULL,
     PRIMARY KEY (`id`)
) ENGINE=InnoDB

注意: 当你使用 BIGINT(20) 时,最大值是 2^63 - 1 == 9223372036854775807。这意味着仍有足够的空间来存储任何 TSID。当你使用 BIGINT(20) unsigned 时,最大值是:2^64-1 = 18446744073709551615

SQLite

将 (主/副) 键的数据类型设置为 INTEGER

CREATE TABLE users (id INTEGER PRIMARY KEY, username TEXT);

注意: SQLite 使用 8 字节 有符号 整数来存储整数。因此,最大正整数值是 2^63 - 1 == 9223372036854775807。这意味着仍有足够的空间来存储任何 TSID。

数据类型比较

TSID max:                          18446744073709551615
TSID 2023-01-01T00:00:00.000Z:       397177100698290050
TSID 2038-01-19T03:14:07.000Z:      2389272048961164191
TSID 2999-12-31T23:59:59.999Z:      7015104302283010234
PHP_INT_MAX:                        9223372036854775807
SQLite INTEGER max:                 9223372036854775807
MySQL BIGINT(20) max:               9223372036854775807
MySQL BIGINT(20) unsigned max:     18446744073709551615

阅读更多

许可

MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件