生成优惠券码方案

发布于 2022-09-01 12:32:39 字数 279 浏览 14 评论 0

项目中遇到需要生成唯一券码的方案.目前有两种生成券码的方案 :

A. 提前生成一批券码(数据库中该字段添加唯一索引),这样保证了券码的唯一性,通过后台脚本预判断券码数量小于某个值,重新生成一批券码

B. 结合redis的方案, 通过redis 设置游标, 以八位的券码为例, 找出最大的八位质数,然后通过质数算法 和 游标 计算出八位的券码,但是该方法不能保证的券码的唯一性 有可能出现重复

A 方案能保证唯一 但是维护困难 B方案不能保证唯一性

大家还有什么好的算法推荐吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

记忆之渊 2022-09-08 12:32:39

时间戳,随机数,哈希函数,用户信息(例如用户的ID,请求的IP什么的)等等……
看具体情况,组合起来用,基本可以实现每次生成的券码不重复。
如果要求比较高,可以建个表,建唯一索引,生成之后试着插入进去就能验证是否重复了。
(如果重复了,就再重新生成随机数,重新计算生成一次就好了。)
提前算什么的,代码复杂,且逗比,还是需要的时候即时计算比较好。

时光沙漏 2022-09-08 12:32:39

跟时间有关的东西就会是唯一的吧

梦冥 2022-09-08 12:32:39

可以用redis的自增操作,是原子性的,不会重复;如果长些也行就用uuid

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文