首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >推荐一款id生成器: Hashids

推荐一款id生成器: Hashids

作者头像
xiaoxi666
发布于 2022-10-07 06:02:06
发布于 2022-10-07 06:02:06
1.4K0
举报
文章被收录于专栏:xiaoxi666的专栏xiaoxi666的专栏

唯一 id 生成的方式有很多种,比较常见的有以下几种方式:

  • 语言自带功能,如 Java 中的 UUID,常用于后端
  • 第三方工具提供,如 npm 中的 nanoid,常用于前端
  • Twitter 开源的 Snowflake 算法,常用于后端
  • 美团开源的 Leaf 算法,常用于后端
  • ...

本文再推荐一款唯一 id 生成器:Hashids。它具有以下特性:

  • 只能把指定的整数(且不支持负数)转换为唯一 id,具有一定的局限性。
  • 不会发生冲突。因此我们无需考虑冲突碰撞的解决方案。
  • 可自定义字符集和盐。
  • 生成的结果无序,避免被遍历。
  • 生成的结果自动规避脏话单词,如 shit 之类。
  • 可以反向解析,这对于某些场景尤为合适(比如短链接系统,可以根据生成的短链接 id 获取原始 id,再从数据库中根据原始 id 拿到对应的长链接)。

可见,该生成器具有一定的局限性,但提供了较为丰富的功能,在特定的场景下是非常好用的。

另外,对应源码短小精悍,且提供了多种版本的实现,包括但不限于JavaScript、Java、C等语言,有兴趣的同学可以到官网 hashids.org 学习使用。

发挥想象力,看看你有什么场景可以使用它呢?

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
字节三面:如何设计一个高性能短链系统?
所谓系统设计,就是给一个场景,让你给出对应的架构设计,需要考虑哪些问题,采用什么方案解决。很多面试官喜欢出这么一道题来考验你的知识广度和逻辑思考能力。
飞天小牛肉
2023/09/19
4.2K0
字节三面:如何设计一个高性能短链系统?
5 大分布式 ID 生成器优缺点简单对比
首先,不管是不是分布式系统,都有 ID 唯一的使用场景。而在分布式场景下,对 ID 的唯一性要求更严格!
业余草
2019/03/19
1.8K0
5 大分布式 ID 生成器优缺点简单对比
如何设计一个短链接系统
短链接是一种将长URL地址转换为较短、易于记忆的链接的技术。它通过使用特定的算法或服务将长链接压缩成更短的形式,以便在限制字符长度或需要更简洁的场景下使用。
柯柏技术笔记
2024/01/10
9990
如何设计一个短链接系统
分布式唯一ID生成方案浅谈
在业务开发中,会存在大量的场景都需要唯一ID来进行标识。比如,用户需要唯一身份标识;商品需要唯一标识;消息需要唯一标识;事件需要唯一标识等等。尤其是在分布式场景下,业务会更加依赖唯一ID。
用户2513027
2022/07/09
7780
分布式唯一ID生成方案浅谈
NanoID 了解一下?比 UUID 更好用!
UUID 是软件开发中最常用的通用标识符之一。然而,在过去的几年里,其他的竞品挑战了它的存在。 其中,NanoID 是 UUID 的主要竞争对手之一。 因此,在本文中,我们将展开讨论 NanoID 的功能、它的亮点以及它的局限性,以便让我们更好地了解何时使用它。 了解 NanoID 及其用法 对于 JavaScript,生成 UUID 或 NanoID 都非常简单。它们都有对应的 NPM 包来帮助我们实现生成。 我们所需要做的就是运行 npm i nanoid 命令安装 NanoID NPM 库 并在我们的
程序猿DD
2022/03/28
2.5K0
9种分布式ID生成方式,总有一款适合你
业务量小于500W或数据容量小于2G的时候单独一个mysql即可提供服务,再大点的时候就进行读写分离也可以应付过来。但当主从同步也扛不住的是就需要分表分库了,但分库分表后需要有一个唯一ID来标识一条数据,数据库的自增ID显然不能满足需求;特别一点的如订单、优惠券也都需要有唯一ID做标识。此时一个能够生成全局唯一ID的系统是非常必要的。那么这个全局唯一ID就叫分布式ID。
sowhat1412
2020/11/05
1.3K0
9种分布式ID生成方式,总有一款适合你
分布式ID生成器的解决方案总结
在互联网的业务系统中,涉及到各种各样的ID,如在支付系统中就会有支付ID、退款ID等。那一般生成ID都有哪些解决方案呢?特别是在复杂的分布式系统业务场景中,我们应该采用哪种适合自己的解决方案是十分重要的。下面我们一一来列举一下,不一定全部适合,这些解决方案仅供你参考,或许对你有用。 一个ID一般来说有下面几种要素: 唯一性:确保生成的ID是全网唯一的。 有序递增性:确保生成的ID是对于某个用户或者业务是按一定的数字有序递增的。 高可用性:确保任何时候都能正确的生成ID。 带时间:ID里面包含时间,一眼扫
Java技术栈
2018/04/02
1.5K0
分布式ID生成器的解决方案总结
双buffer分布式id生成器
在互联网行业很多业务场景都需要基于业务的id生成器,来生成各个业务数据的业务主键,很多传统企业或者小众业务会直接拿数据库的自增主键当做业务主键,当然这样能够解决大部分问题,但是在流量比较大的业务场景中,一般会考虑分库分表,那么自增主键的优势就荡然无存了,因为每张表的自增主键对于上层业务来说无法做到唯一性(或者说扩展性不好)。
叔牙
2020/11/19
1.5K0
双buffer分布式id生成器
Go语言中的分布式ID生成器设计与实现
在分布式系统中,每个实体都需要一个全局唯一的标识符(ID)。Go语言因其高效的并发处理能力和丰富的库支持,成为构建分布式ID生成器的理想选择。本文将探讨几种常见的分布式ID生成策略,以及它们在Go中的实现,同时分析可能遇到的问题和解决方法。
Jimaks
2024/05/15
2530
Go语言中的分布式ID生成器设计与实现
一个PHP实现的ID生成器
通常来说,不管使用什么数据库,表里都有一个名为 id 的主键,既然是主键,那么必然要满足唯一性,对于 MySQL 用户来说,它多半是一个 auto_increment 自增字段,也有一些别的用户喜欢使用 UUID 做主键,不过对 MySQL(特别是 InnoDB)来说,UUID 通常不是一个好选择,因为聚簇索引要求物理数据按照主键排序,而 UUID 本身是无序的,所以会带来很多不必要的 IO 消耗。于是乎我们得到一个结论:ID 最好是顺序的唯一值。
LA0WAN9
2021/12/14
5510
你不得不知的几个互联网ID生成器方案
服务化、分布式已成为当下系统开发的首选,高并发操作在数据存储时,需要一套id生成器服务,来保证分布式情况下全局唯一性,以确保系统的订单创建、交易支付等场景下数据的唯一性,否则将造成不可估量的损失。
MavenTalker
2023/03/08
9130
你不得不知的几个互联网ID生成器方案
搞定了 6 种分布式ID,分库分表哪个适合做主键?
本文是《ShardingSphere5.x分库分表原理与实战》系列的第七篇,目前系列的前几篇制作成了PDF,需要的可以在文末获取下载方式,持续更新中。今天咱们继续一起来探究下,分布式ID在分库分表中起到的作用以及如何使用,ShardingSphere-jdbc中已经为我们提供了多种分布式主键ID生成策略。接下来将分别介绍这些策略的优缺点,看看它们在实际应用中的场景和效果。
程序员小富
2024/04/18
6270
ByteByteGo学习笔记:深入理解与设计唯一ID生成器
在现代软件系统架构中,唯一ID(Unique Identifier)扮演着至关重要的角色。它就像是系统中每个实体的“身份证”,用于在分布式环境、数据库记录、消息队列等各种场景中唯一标识每一个对象。从用户账户、订单编号,到微服务实例、数据库记录,唯一ID的应用无处不在。一个设计良好的唯一ID生成器,能够确保系统数据的完整性、一致性,并提升系统的可扩展性和可维护性。
攻城狮笔记
2025/02/12
1740
不能错过的分布式ID生成器(Leaf ),好用的一批
Leaf是美团推出的一个分布式ID生成服务,名字取自德国哲学家、数学家莱布尼茨一句话:“There are no two identical leaves in the world.”(“世界上没有两片相同的树叶”),取个名字都这么有寓意,美团程序员牛掰啊!
Java程序猿阿谷
2020/08/11
1.6K0
不能错过的分布式ID生成器(Leaf ),好用的一批
探秘一线大厂最热门的分布式 ID 解决方案:3大类10种方案,你中意哪款?
在业务开发中,大量场景需要唯一ID来进行标识:用户需要唯一身份标识、商品需要唯一标识、消息需要唯一标识、事件需要唯一标识等,都需要全局唯一ID,尤其是复杂的分布式业务场景中全局唯一ID更为重要。于是就会引申出分布式系统中唯一主键ID生成策略问题。
程序视点
2023/12/19
2K0
探秘一线大厂最热门的分布式 ID 解决方案:3大类10种方案,你中意哪款?
分布式场景下的ID生成解决方案
在服务设计中,经常遇到的一个问题就是如何生成一个全局唯一的ID,例如订单号,流水号等。对于ID的要求主要有以下几点:
码农架构
2020/10/29
1.2K0
分布式场景下的ID生成解决方案
注意:雪花算法并不是ID的唯一选择!
秋天,树上掉下两片叶子,你要和它们说再见。但你如何知道这片叶子,不是另外一片叶子?是通过它的形状,还是通过它的重量?
xjjdog
2022/09/26
2.8K0
分布式id生成器
作者:CoderZS juejin.im/post/5d8882d8f265da03e369c063
用户5224393
2019/10/14
9890
分布式id生成器
为什么建议使用递增的业务ID
业务ID是我们理解、管理和操作业务实体的关键。通过业务ID,我们可以查询、更新和删除业务实体,也可以跟踪业务实体的状态和历史。
windealli
2024/06/25
4030
为什么建议使用递增的业务ID
那些惊艳的算法们(四)——唯一ID生成器snowflake
很多场景需要使用全局唯一ID,用来标识唯一一条消息,唯一一笔交易,唯一一个用户,唯一一张图片等等。 传统数据库表的自增主键是很简单的一种实现方式,前提是你没有分库,也没有分表,如果你分表了,id就会重复,失去唯一性:
全栈程序员站长
2022/06/28
7860
那些惊艳的算法们(四)——唯一ID生成器snowflake
相关推荐
字节三面:如何设计一个高性能短链系统?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档