Redis实现根据初始值自增记录

业务需求是每点击按钮产生一条新的单号,根据日期变化,每次新增1,组合格式为xx202307100001,其中xx为自定义前缀。

使用redis进行自增,设计代码如下


@Resource
private RedisTemplate<String,Object> redisTemplate;

/**
 * 递增
 * @param key    键
 * @param factor 要增加几(大于0)
 */
public Long incremental(String key, long factor) {
    if (factor < 0 ) {
        throw new RuntimeException("递增因子必须大于0");
    }
    return redisTemplate.opsForValue().increment(key, factor);
}


/**
 * 指定缓存失效时间
 * @param key  键
 * @param time 时间(秒)
 */
public boolean expire(String key, long time) {
    try {
        if (time > 0) {
            redisTemplate.expire(key, time, TimeUnit.SECONDS);
        }
        return true;
    } catch (Exception e) {
        log.info("缓存异常:{}":e.printStackTrace());
        return false;
    }
}

/**
 * 生成单号
 * @param invalidTime 时间格式 yyyyMMdd 20230710
 * @param incremental 自增大小数值 1
 * @param billNoStart 起始数值  00000
 * @param prefix 单号前缀 xx
 **/
public String createId(String invalidTime, Long incremental,
					   String billNoStart, String prefix) {
    DecimalFormat df = new DecimalFormat(billNoStart);
    String format = df.format(incremental);
    return prefix + invalidTime + format;
}

其中opsForValue()方法是操作字符串的方法,另外四种数据结构的操作分别是:

redisTemplate.opsForHash(); 	// 操作hash 散列
redisTemplate.opsForList(); 	// 操作list 列表
redisTemplate.opsForSet();		// 操作set 集合
redisTemplate.opsForZSet();		// 操作set 有序集合

详细的对五种数据结构的操作方法如下(非常的详细):
链接: RedisTemplate操作Redis

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值