蜘蛛网有很多购物卡,电影优惠券,抵用券。

比如一个需求后台此刻需要生成新的一批10万条卡号,3万给微信渠道,5万主站,app,2万外部渠道发放。

那么如何快速生成卡号,而且不重复呢?

逻辑很简单,就是通过某种方法生成一个随机的卡号,然后去数据库排重,不重复就插入,直到10万条。

1、什么方法生成卡号呢?

不同的业务类型可以区分,抵用券的用DY开头,兑换券用DH开头,这样做是为了查询重复时候加速,你还可以继续加维度

2、怎么生成,保证速度?

一开始只想到怎么生成卡号数据,能避免查询重复,结果卡的长度不太可能短,体验不好。

后来经同事一提醒,存储过程,那就写存储过程。

存储过程结果也是比较慢,1000条大约33s。然后又问那个同事,批量。我想起来mysql的批量

set autocommit=0;
CREATE TABLE `biz_card` (`id` int(11) NOT NULL AUTO_INCREMENT,`cardno` varchar(50) DEFAULT NULL,`status` tinyint(4) DEFAULT '0',PRIMARY KEY (`id`),KEY `ix_cardno` (`cardno`)
) ENGINE=InnoDB AUTO_INCREMENT=7303 DEFAULT CHARSET=utf8;
DROP PROCEDURE IF EXISTS `genCardNo`;
CREATE PROCEDURE genCardNo(IN num int)
begin -- 产生一个随机7位数DECLARE newCard int;  set autocommit=0;while num>0 doSET newCard=FLOOR(10000000+ (RAND() * 89999999));select @repCount:=count(id) from biz_card where cardno=CONCAT('DY',newCard);-- 重复判断if @repCount>0 THENSELECT concat('the value is repeat:', 'DY',newCard);elseinsert biz_card(cardno,status)values(CONCAT('DY',newCard),0);set num = num - 1; if num%5000=0 then SELECT concat('begin commit,num:',num);commit;end if;end if;end WHILE;commit;end;[SQL] call genCardNo(1000);
受影响的行: 1
时间: 0.3s

[SQL] call genCardNo(100000);
受影响的行: 0
时间: 15.350s

这样好像可以了。如果数据量再大呢,接下来我的想法是通过消息队列分发到不同机器上去生成,排重采用redis存储处理

快速生成不重复的卡号相关推荐

  1. php网页批量写入数据库卡密_php编写批量生成不重复的卡号密码代码

    闲的蛋疼的时候,顺便加强下自己对PHP中数组操纵的一些技巧,就写了下面的一段小代码,可以随机生成卡号密码对应的数组,并且自动去重复,思路没有,纯粹瞎掰. function MakeCard() { s ...

  2. php如何生成订单号,php如何生成不重复订单号

    php生成不重复订单号的方法:首先可以预先生成订单号:然后进行去重存起来:最后用的时候取一个出来用就行,代码为[$orderNo = date('YmdHis').substr(microtime() ...

  3. php产生订单号不重复,php如何生成不重复订单号

    php生成不重复订单号的方法:首先可以预先生成订单号:然后进行去重存起来:最后用的时候取一个出来用就行,代码为[$orderNo = date('YmdHis').substr(microtime() ...

  4. Excel如何快速生成不重复随机整数

    日常工作中我们经常会遇到要生成随机数的情况,比如分考场.分班级.抽样.抽奖等等.下面就给大家介绍一下如何生成不重复随机数. 一.工具法 1.如下图是某学校考试座次表,姓名列已经完成,现在我们要在座次列 ...

  5. sqlserver如何快速生成不重复的随机数据

    /*1. 如何生成8位随机数,生成的数越随机,重复的可能性当然越小 2. 控制不重复 3. 考虑性能 针对这个问题,我写了如下的示例来解决,希望能为有这类需求的人提供指导 */ USE tempdb ...

  6. php 不重复订单号,php如何生成不重复的订单号,php不重复订单编号

    php如何生成不重复的订单号PHP如何生成重复的订单号,php生成不重复订单号的方法如下:1.利用数据库的主键值生成自增订单号:2.实现"日期自增号"的订单号:3.生成随机订单号: ...

  7. php 不重复订单号,php如何生成不重复的订单号

    php生成不重复订单号的方法:1.利用数据库主键值产生一个自增长的订单号:2.实现"日期+自增长数字"的订单号:3.产生随机的订单号:4.实现"字母+数字字符串式&quo ...

  8. 批量生成不重复的虚拟卡卡号和密码

    一. 网站开发需要一组虚拟的消费卡,卡号和密码不重复,且具有随机特性 1 <?php 2 $numLen=16; //必须16以上 要不然重复的可能性很高 3 $pwdLen=10; 4 $c= ...

  9. java获取不重复订单号,Java 生成永不重复的订单号

    package com.taiping.test; import java.text.SimpleDateFormat; import java.util.Date; import java.util ...

最新文章

  1. 【OpenGL】向Shader中传递数据
  2. Android学习笔记13-Acitivty与Fragment通信
  3. 【PowerBi】Power Query导入Excel数据
  4. 如何设计良好的viewcontroller
  5. 利益相关者软件工程_如何向利益相关者解释用户体验的重要性
  6. [数据结构]树、森林与二叉树之间的相互转换方法
  7. oracle 11g 组合分区,Oracle数据库
  8. php proc open 返回,PHP proc_open多次打开
  9. ros怎么跑小车_ROS坐标转换讲解 | Autolabor Simulation
  10. 接口自动化持续集成实战
  11. mybatis generator 中文注释_[SpringBoot2.X] 23- 整合持久层技术 -MyBatis - 配置
  12. vue+node全栈移动商城【7】路由跳转-注册页面
  13. 美团商品知识图谱的构建及应用
  14. 2019年第十届蓝桥杯A组国赛(C/C++)
  15. 掌握销售谈判三大策略,开单成功率提升60%!
  16. 合成大西瓜自制版教程
  17. stack-es-标准篇-ElasticsearchClient-combined_fields
  18. Redis数据库(二)
  19. leetcode5490
  20. python项目管理工具_项目管理工具之Trac

热门文章

  1. AWS【亚马逊云】的EC2以及VPC网络框架介绍
  2. C++多继承中的二义性问题
  3. 微服务时代之2017年五军之战
  4. Python3网络爬虫之requests动态爬虫:拉钩网
  5. ssm基于Vue的共享单车app系统
  6. Miniconda3环境搭建详细流程
  7. 求水洼的问题——深度优先算法
  8. [C++]实现memcpy
  9. 简信CRM:企业需要定制CRM系统的三大理由
  10. 一款Python实用神器,5 行 Python 代码 实现一键批量扣图