redis自增流水号生成
需求如下:
单号生成规则: “4位年份”+“1位渠道”+“6位流水号”+“1位校验”
其中6位渠道的生成和本篇文章的内容主角:redis有关
6位流水号——从“000001”开始,到“999999”结束;
看下面这个数据结构(本地搭建redis,用redis客户端做实验)
127.0.0.1:6379> set visitors 0
OK
127.0.0.1:6379> incr visitors
(integer) 1
127.0.0.1:6379> incr visitors
(integer) 2
127.0.0.1:6379> incr visitors
(integer) 3
127.0.0.1:6379>
关键的两条命令:
SET key value
设置key=value
INCR key
增加键的整数值一次
实现代码:
备注:incr默认每次增长1
public static String serialNo(String key)
{
String currData = callDate();
String currTime = String.valueOf(System.currentTimeMillis());
String ret = String.valueOf(redisService.incr(key));
return currData.substring(0,4) + "3" + "000000".substring(ret.length()) + ret + currTime.substring(currTime.length() - 1);
}
public static String callDate()
{
SimpleDateFormat format0 = new SimpleDateFormat("yyyyMMdd");
Date date = new Date();
return format0.format(date.getTime());
}
202130000179
202130000186
202130000198
改造:每次增长3
public static