共计 1498 个字符,预计需要花费 4 分钟才能阅读完成。
流年絮语
2024-02-24 09:29:08
浏览数 (2407)
Sqids 是一种功能强大的开源库,旨在生成短而唯一的标识符,可广泛应用于链接缩短、日志事件标识、对象 ID 生成等多个领域。这些标识符具有 URL 安全性,可以编码多个数字,并且不包含任何粗话。在本文中,我们将深入探讨 Sqids 的用途和限制,并探讨其在数据管理和标识方面的重要性
什么是 Sqids?
Sqids(发音为“squids”)是一个小型库,可让您从数字生成唯一的 ID。它有利于链接缩短、快速且 URL 安全的 ID 生成以及解码回数字,以便更快地进行数据库查找。
它有什么用处?
用于链接缩短,为日志生成唯一事件 ID,为网站上的产品 / 对象生成 ID(就像 YouTube 为视频所做的那样),为文本消息生成短 ID,邮件确认代码等。
它不适用于什么?
任何不敏感的数据。生成的 ID 不是哈希值,可以解码回数字。例如,它们可能不是用户 ID 的好选择,因为一旦解码,它们可能会透露您应用的用户数量。
可以同时编码多个数字吗?
可以。Sqids 可以将一个或多个非负数编码为单个 ID。您可以编码的数字数量没有限制,但可以编码的数字大小有限(取决于实现语言)。出于几个原因很有用:您可以编码 UNIX 时间戳并创建过期 ID,或者您可以将数据库分片号与主键一起编码,并节省额外的数据库查询。
生成的 ID 是唯一的吗?
是的,生成的 ID 对于输入和字母表是唯一的。请记住,默认字母表包含大写和小写字母,因此默认 ID 是区分大小写的。
Sqids 有什么限制?
- Sqids 无法编码负数。
- 最小字母表长度为 3 个字符。
- 字母表不能包含任何多字节字符。
- Sqids 不能生成特定长度的 ID,只能生成至少特定长度的 ID。最小长度参数范围介于 0 和 255 之间。
- Sqids 可以尝试重新生成 ID,直到字母表长度减一。
Sqids 应用
安装
composer require sqids/sqids
示例代码
1. 简单的解码和编码
$sqids = new Sqids();
$id = $sqids->encode([1, 2, 3]);
$numbers = $sqids->decode($id);
注意: 由于算法的设计,多个 ID 可以解码回相同的数字序列。如果 ID 是规范的对您的设计很重要,您必须手动重新编码解码的数字并检查生成的 ID 是否匹配。
2. 强制 ID 的最小长度
$sqids = new Sqids(minLength: 10);
$id = $sqids->encode([1, 2, 3]);
$numbers = $sqids->decode($id);
3. 通过提供自定义字母表随机化 ID
$sqids = new Sqids(alphabet: 'FxnXM1kBN6cuhsAvjW3Co7l2RePyY8DwaU04Tzt9fHQrqSVKdpimLGIJOgb5ZE');
$id = $sqids->encode([1, 2, 3]);
$numbers = $sqids->decode($id);
4. 防止特定单词出现在自动生成的 ID 中的任何位置
$sqids = new Sqids(blocklist: ['86Rf07']);
$id = $sqids->encode([1, 2, 3]);
$numbers = $sqids->decode($id);
总结
Sqids 作为一种开源库,提供了生成短的唯一标识符的功能。它在链接缩短、日志事件标识、产品 / 对象 ID 生成以及文本消息和邮件确认代码等方面具有广泛的应用。然而,需要注意的是,由于生成的 ID 可以解码回数字,不适合用于敏感数据或用户 ID 等敏感信息的存储。Sqids 的灵活性和独特性使其成为各种应用场景下的有用工具。
原文地址: Sqids:生成简短唯一 ID 开源库