Skip to content

🔢 序号生成器

📖 功能介绍

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     # 最小空闲连接

⚠️ 注意事项

  1. 性能考虑

    • Redis连接池参数根据实际并发量调整
    • 合理设置过期时间,避免数据堆积
  2. 格式规范

    • 建议业务代码使用大写字母
    • 日期格式根据业务需求选择
    • 序号长度建议4-6位
  3. 可用性保障

    • 确保Redis服务稳定性
    • 建议增加监控告警
    • 关键业务考虑Redis集群