Laravel 结合 Redis 生成订单号 (年月日+6 位自增)
话不多说 直接撸代码
<?php
namespace App\Services;
use Predis\Client;
class UtilService
{
/**
* UtilService constructor
* @param Client $redis
*/
public function __construct(Client $redis)
{
$this->redis = $redis;
}
/**
* 生成唯一单据号
* @param String $key 单号KEY
* @return string
*/
public function generateReceiptCode(string $key)
{
return $key . date('Ymd') . sprintf("%06d",$this->redis->incr($key));
}
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
关于 LearnKu
为何不用雪花算法?
@00x00
我试试雪花算法
2219944901359
2220004015923
2220062766757
2220119764908
这些数据不符合我的业务场景,
我的是 20190509000003
20190509000004
20190509000005
我认为欠缺之处,当redis意外宕机的时候,缓存的自增数量就会丢失了,这时候就可能导致重复,要考虑一下宕机后如何恢复正常