概述
直接上代码:
package com.fuli.utils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Calendar;
/**
* @description: 通过Redis生成序列号
* @author: YqZhilan
* @date: 2020-08-01
*/
@Component
public class RedisSequenceUtil {
@Autowired
private RedisUtil redisUtil;
private final long delta = 1; // 默认步长
/***
* 生成序列值的前半段
* @param strs
* @return
*/
public String generateSequenceF(String... strs) {
StringBuilder sb = new StringBuilder();
if (strs != null) {
for (int i = 0; i < strs.length; i++) {
sb.append(strs[i]);
}
}
return sb.toString();
}
/***
* 获取下一个序列号
* @param key Redis Key值
* @param value 初始值
* @param timeout 过期时间
* @return
*/
public String setSequence(String key, long value, long timeout) {
redisUtil.set(key, value, timeout);
return value+"";
}
/***
* 获取当前序列号
* @param key Redis Key值
* @return
*/
public String getCurrentSequence(String key) {
Object obj = redisUtil.get(key);
return obj == null ? "" : obj.toString();
}
/***
* 获取下一个序列号
* @param key Redis Key值
* @return
*/
public String getNextSequence(String key) {
return this.getNextSequence(key, this.delta);
}
/***
* 获取下一个序列号
* @param key Redis Key值
* @param delta 增长步长
* @return
*/
public String getNextSequence(String key, long delta) {
redisUtil.incr(key, delta);
Object obj = redisUtil.get(key);
return obj == null ? "" : obj.toString();
}
/***
* 获取本天剩余的秒数
* @return
*/
public long getLeftSeconsOfDay() {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_YEAR, 1);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.MILLISECOND, 0);
return (cal.getTimeInMillis() - System.currentTimeMillis()) / 1000;
}
}
说明:
private RedisUtil redisUtil; 该类仅是一个Redis操作的工具类,可以自己封装。
至此结束 ... ...
最后
以上就是悦耳荷花为你收集整理的技术工具类:通过Redis的自增序列来生成系统使用的序列号的全部内容,希望文章能够帮你解决技术工具类:通过Redis的自增序列来生成系统使用的序列号所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复