当前位置: 首页 > news >正文

redis 生成流水工具类

使用redis存储流水号,代码如下:


import cn.hutool.core.date.DateUtil;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;@Component
public class RedisSerialUtil {private RedisTemplate<String, Object> redisTemplate;public RedisSerialUtil(RedisTemplate<String, Object> redisTemplate) {this.redisTemplate = redisTemplate;}/*** @param dateFormat: 日期格式 yyyyMMdd* @param redisKeyPrefix: redis的key 自定义* @param initialValue: 初始序列号* @param delta: 自增步长* @param formatSpecifier: 补全位数 %03d* return String* {@link String}* @author Miki* @date 2023-10-10* @description 默认当天的流水*/public String generateCode(String dateFormat, String redisKeyPrefix, String initialValue, long delta, String formatSpecifier) {String serialCode = "";String today = DateUtil.today();String formatDate = DateUtil.format(DateUtil.parse(today), dateFormat);String redisKey = redisKeyPrefix.concat(formatDate);// 获取缓存数据Long redisValue = redisTemplate.opsForValue().increment(redisKey, delta);if (redisValue == null || redisValue.equals(delta)) {redisTemplate.opsForValue().set(redisKey, initialValue);serialCode = String.format(formatSpecifier, Integer.parseInt(initialValue));} else {serialCode = String.format(formatSpecifier, redisValue);}return serialCode;}
}

调用代码如下:

public class TestSerial{@Autowiredprivate RedisTemplate<String, Object> redisTemplate;RedisSerialUtil redisSerialUtil = new RedisSerialUtil(redisTemplate);String dateFormat = "yyyyMMdd";String redisKeyPrefix = "redisKeyPrefix:";String formatSpecifier = "%03d";// 生成流水号String serialCode = redisSerialUtil.generateCode(dateFormat, redisKeyPrefix, "1", 1, formatSpecifier);// 返回的serialCode 为001,002,只有流水号// redis中的key = redisKeyPrefix + dateFormat ;value为流水号}

http://www.lryc.cn/news/192107.html

相关文章:

  • BGP服务器租用腾讯云和阿里云价格对比
  • PyTorch 深度学习之多分类问题Softmax Classifier(八)
  • 抖音直播招聘小程序可以增加职位展示,提升转化率,增加曝光度
  • 论文阅读之《Learn to see in the dark》
  • Docker 生成自定义镜像并使用Docker Compose部署
  • 设计模式~调停者(中介者)模式(Mediator)-21
  • 计算机毕业设计选什么题目好?springboot 医院门诊在线预约挂号系统
  • linux中使用ps查看进程的所有线程
  • 本、硕、博区别真的辣么大吗?
  • [Spring] SpringMVC 简介(一)
  • 机器学习基础之《回归与聚类算法(2)—欠拟合与过拟合》
  • flutter dio 请求封装(空安全)
  • chatgpt GPT-4V是如何实现语音对话的
  • C++项目-求水仙花数
  • 从零开始基于LLM构建智能问答系统的方案
  • Android---Synchronized 和 ReentrantLock
  • 【解题报告】牛客挑战赛70 maimai
  • 算启新程 智享未来 | 紫光展锐携手中国移动共创数智未来
  • thinkphp5.1 获取缓存cache(‘cache_name‘)特别慢,php 7.0 unserialize 特别慢
  • 【Linux】UNIX 术语中,换页与交换的区别和Linux 术语中,换页与交换的区别?
  • 零基础学python之集合
  • PromptScript:轻量级 DSL 脚本,加速多样化的 LLM 测试与验证
  • 强化学习(Reinforcement Learning)与策略梯度(Policy Gradient)
  • JUC之ForkJoin并行处理框架
  • 【牛客面试必刷TOP101】Day8.BM33 二叉树的镜像和BM36 判断是不是平衡二叉树
  • CSS padding(填充)
  • C语言达到什么水平才能从事单片机工作
  • Java架构师理解SAAS和多租户
  • 关于Java线程池相关面试题
  • ExcelBDD Python指南