主题切换
🔢 序号生成器
📖 功能介绍
TIP
序号生成器是一个基于Redis的高性能、可定制的序列号生成工具。适用于订单编号、流水号等业务场景的序号生成。
✨ 核心特性
特性 | 说明 | 示例 |
---|---|---|
自定义前缀 | 支持业务代码和自定义前缀组合 | ORDER、PAY |
日期格式化 | 灵活的日期格式支持 | yyyyMMdd、yyyyMMddHHmm |
序号长度控制 | 自动补零,保证固定位数 | 001、0001 |
过期时间 | 自动清理历史数据,避免垃圾数据 | 1天、7天 |
原子性操作 | 基于Redis实现,保证并发安全 | - |
🛠️ 接口说明
接口类:com.wueasy.cloud.web.service.SerialNumberGenerateService
1. 完整参数生成
java
/**
* 生成完整格式序号
* @param businessCode 业务代码(如:ORDER)
* @param prefix 自定义前缀(如:TEST)
* @param dateFormat 日期格式(如:yyyyMMdd)
* @param length 序号长度(如:4)
* @param expire 过期时间
* @return 生成的序号(如:TEST202403010001)
*/
String generate(String businessCode, String prefix, String dateFormat, int length, Duration expire);
2. 无前缀生成
java
/**
* 生成无前缀序号
* @param businessCode 业务代码
* @param dateFormat 日期格式
* @param length 序号长度
* @param expire 过期时间
* @return 生成的序号(如:202403010001)
*/
String generate(String businessCode, String dateFormat, int length, Duration expire);
3. 简化版生成
java
/**
* 生成简化版序号(使用默认日期格式)
* @param businessCode 业务代码
* @param length 序号长度
* @param expire 过期时间
* @return 生成的序号
*/
String generate(String businessCode, int length, Duration expire);
/**
* 生成最简序号(使用默认过期时间)
* @param businessCode 业务代码
* @param length 序号长度
* @return 生成的序号
*/
String generate(String businessCode, int length);
💡 使用示例
1. 订单号生成
java
@Autowired
private SerialNumberGenerateService serialNumberService;
public String generateOrderNo() {
// 生成格式:202403010001
return serialNumberService.generate(
"ORDER", // 业务代码
"yyyyMMdd", // 日期格式
4, // 序号长度
Duration.ofDays(1)// 1天后过期
);
}
2. 支付流水号生成
java
public String generatePaymentNo() {
// 生成格式:TEST20240301001
return serialNumberService.generate(
"PAY", // 业务代码
"TEST", // 自定义前缀
"yyyyMMdd", // 日期格式
3, // 序号长度
Duration.ofDays(7)// 7天后过期
);
}
⚙️ Redis配置
yaml
spring:
data:
redis:
database: 0
host: 127.0.0.1
port: 6379
password: 123456
timeout: 30000
lettuce:
pool:
max-active: 100 # 最大连接数
max-wait: -1 # 最大等待时间
max-idle: 10 # 最大空闲连接
min-idle: 0 # 最小空闲连接
⚠️ 注意事项
性能考虑
- Redis连接池参数根据实际并发量调整
- 合理设置过期时间,避免数据堆积
格式规范
- 建议业务代码使用大写字母
- 日期格式根据业务需求选择
- 序号长度建议4-6位
可用性保障
- 确保Redis服务稳定性
- 建议增加监控告警
- 关键业务考虑Redis集群