php - 生成优惠券码方案
大家讲道理
大家讲道理 2017-04-10 15:42:19
[PHP讨论组]

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

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

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

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

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

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(3)
大家讲道理

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

伊谢尔伦

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

PHP中文网

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号