sequence: The next 13 bits, represents a sequence within the same second, max for 8192/s
*
- * The {@link DefaultUidGenerator#parseUID(long)} is a damai method to parse the bits
+ * The {@link DefaultUidGenerator#parseUid(long)} is a damai method to parse the bits
*
* {@code
* +------+----------------------+----------------+-----------+
@@ -101,7 +101,7 @@ public class DefaultUidGenerator implements UidGenerator, InitializingBean {
}
@Override
- public long getUID() throws UidGenerateException {
+ public long getUid() throws UidGenerateException {
try {
return nextId();
} catch (Exception e) {
@@ -121,7 +121,7 @@ public class DefaultUidGenerator implements UidGenerator, InitializingBean {
}
@Override
- public String parseUID(long uid) {
+ public String parseUid(long uid) {
long totalBits = BitsAllocator.TOTAL_BITS;
long signBits = bitsAllocator.getSignBits();
long timestampBits = bitsAllocator.getTimestampBits();
@@ -134,7 +134,7 @@ public class DefaultUidGenerator implements UidGenerator, InitializingBean {
long deltaSeconds = uid >>> (workerIdBits + sequenceBits);
Date thatTime = new Date(TimeUnit.SECONDS.toMillis(epochSeconds + deltaSeconds));
- String thatTimeStr = DateUtils.formatByDateTimePattern(thatTime);
+ String thatTimeStr = AbstractDateUtils.formatByDateTimePattern(thatTime);
// format as string
return String.format("{\"UID\":\"%d\",\"timestamp\":\"%s\",\"workerId\":\"%d\",\"sequence\":\"%d\"}",
@@ -227,7 +227,7 @@ public class DefaultUidGenerator implements UidGenerator, InitializingBean {
public void setEpochStr(String epochStr) {
if (StringUtils.isNotBlank(epochStr)) {
this.epochStr = epochStr;
- this.epochSeconds = TimeUnit.MILLISECONDS.toSeconds(DateUtils.parseByDayPattern(epochStr).getTime());
+ this.epochSeconds = TimeUnit.MILLISECONDS.toSeconds(AbstractDateUtils.parseByDayPattern(epochStr).getTime());
}
}
diff --git a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/DateUtils.java b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/AbstractDateUtils.java
similarity index 92%
rename from damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/DateUtils.java
rename to damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/AbstractDateUtils.java
index e60b8cbbacb369fa195cd35c137ee529395dd002..4899e7664ef4552b56f2f7adadec202e9ae9e2dd 100644
--- a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/DateUtils.java
+++ b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/AbstractDateUtils.java
@@ -15,18 +15,18 @@
*/
package com.baidu.fsg.uid.utils;
+import org.apache.commons.lang.time.DateFormatUtils;
+
import java.text.ParseException;
import java.util.Calendar;
import java.util.Date;
-import org.apache.commons.lang.time.DateFormatUtils;
-
/**
- * DateUtils provides date formatting, parsing
+ * AbstractDateUtils provides date formatting, parsing
*
* @author yutianbao
*/
-public abstract class DateUtils extends org.apache.commons.lang.time.DateUtils {
+public abstract class AbstractDateUtils extends org.apache.commons.lang.time.DateUtils {
/**
* Patterns
*/
@@ -34,7 +34,7 @@ public abstract class DateUtils extends org.apache.commons.lang.time.DateUtils {
public static final String DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
public static final String DATETIME_MS_PATTERN = "yyyy-MM-dd HH:mm:ss.SSS";
- public static final Date DEFAULT_DATE = DateUtils.parseByDayPattern("1970-01-01");
+ public static final Date DEFAULT_DATE = AbstractDateUtils.parseByDayPattern("1970-01-01");
/**
* Parse date by 'yyyy-MM-dd' pattern
diff --git a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/DockerUtils.java b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/AbstractDockerUtils.java
similarity index 96%
rename from damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/DockerUtils.java
rename to damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/AbstractDockerUtils.java
index 73e1c3b5011211ed0f13d25f3ef6b9fccdc5fb83..59643bed24be13f3bbdc1e141fc2ce9fc8160c6f 100644
--- a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/DockerUtils.java
+++ b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/AbstractDockerUtils.java
@@ -20,12 +20,12 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
- * DockerUtils
+ * AbstractDockerUtils
*
* @author yutianbao
*/
-public abstract class DockerUtils {
- private static final Logger LOGGER = LoggerFactory.getLogger(DockerUtils.class);
+public abstract class AbstractDockerUtils {
+ private static final Logger LOGGER = LoggerFactory.getLogger(AbstractDockerUtils.class);
/** Environment param keys */
private static final String ENV_KEY_HOST = "JPAAS_HOST";
diff --git a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/EnumUtils.java b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/AbstractEnumUtils.java
similarity index 91%
rename from damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/EnumUtils.java
rename to damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/AbstractEnumUtils.java
index 326153987fd24aec9187ac184a472b9023940c24..927064ec18478e113dc4ea3b7bf5feaa21d67db3 100644
--- a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/EnumUtils.java
+++ b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/AbstractEnumUtils.java
@@ -18,11 +18,11 @@ package com.baidu.fsg.uid.utils;
import org.springframework.util.Assert;
/**
- * EnumUtils provides the operations for {@link ValuedEnum} such as Parse, value of...
+ * AbstractEnumUtils provides the operations for {@link ValuedEnum} such as Parse, value of...
*
* @author yutianbao
*/
-public abstract class EnumUtils {
+public abstract class AbstractEnumUtils {
/**
* Parse the bounded value into ValuedEnum
diff --git a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/NetUtils.java b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/AbstractNetUtils.java
similarity index 97%
rename from damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/NetUtils.java
rename to damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/AbstractNetUtils.java
index 4f0f17f4afd2c11cd34655d41bca45231e53ce11..bcad0fe6ef8bbf590a652d3cdc5b620eb623d686 100644
--- a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/NetUtils.java
+++ b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/AbstractNetUtils.java
@@ -21,11 +21,11 @@ import java.net.SocketException;
import java.util.Enumeration;
/**
- * NetUtils
+ * AbstractNetUtils
*
* @author yutianbao
*/
-public abstract class NetUtils {
+public abstract class AbstractNetUtils {
/**
* Pre-loaded local address
diff --git a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/ValuedEnum.java b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/ValuedEnum.java
index 22a496467286589051ab0c963861ef2489efbae0..d604912955dac5f248dabdab592b43cccddb3881 100644
--- a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/ValuedEnum.java
+++ b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/utils/ValuedEnum.java
@@ -18,10 +18,14 @@ package com.baidu.fsg.uid.utils;
/**
* {@code ValuedEnum} defines an enumeration which is bounded to a value, you
* may implements this interface when you defines such kind of enumeration, that
- * you can use {@link EnumUtils} to simplify parse and valueOf operation.
+ * you can use {@link AbstractEnumUtils} to simplify parse and valueOf operation.
*
* @author yutianbao
*/
public interface ValuedEnum {
+ /**
+ * 执行
+ * @return 结果
+ * */
T value();
}
diff --git a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/worker/WorkerNodeType.java b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/worker/WorkerNodeType.java
index b69b2401202380c96619747f7b669e2b0fcde70c..213a9537e1e572f53f47a7394eb001b160f6f4c3 100644
--- a/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/worker/WorkerNodeType.java
+++ b/damai-id-generator-framework/src/main/java/com/baidu/fsg/uid/worker/WorkerNodeType.java
@@ -25,7 +25,9 @@ import com.baidu.fsg.uid.utils.ValuedEnum;
* @author yutianbao
*/
public enum WorkerNodeType implements ValuedEnum {
-
+ /**
+ * 百度uid
+ * */
CONTAINER(1), ACTUAL(2);
/**
diff --git a/damai-id-generator-framework/src/main/java/com/damai/toolkit/SnowflakeIdGenerator.java b/damai-id-generator-framework/src/main/java/com/damai/toolkit/SnowflakeIdGenerator.java
index 526e36d9dea6ca54f89f2e397c5fc681b881560d..131eea2323be67ce57be20cdf2493477bd287075 100644
--- a/damai-id-generator-framework/src/main/java/com/damai/toolkit/SnowflakeIdGenerator.java
+++ b/damai-id-generator-framework/src/main/java/com/damai/toolkit/SnowflakeIdGenerator.java
@@ -19,46 +19,28 @@ import java.util.concurrent.ThreadLocalRandom;
@Slf4j
public class SnowflakeIdGenerator {
- /**
- * 时间起始标记点,作为基准,一般取系统的最近时间(一旦确定不能变动)
- */
- private static final long twepoch = 1288834974657L;
- /**
- * 机器标识位数
- */
+ private static final long BASIS_TIME = 1288834974657L;
private final long workerIdBits = 5L;
private final long datacenterIdBits = 5L;
private final long maxWorkerId = -1L ^ (-1L << workerIdBits);
private final long maxDatacenterId = -1L ^ (-1L << datacenterIdBits);
- /**
- * 毫秒内自增位
- */
+
private final long sequenceBits = 12L;
private final long workerIdShift = sequenceBits;
private final long datacenterIdShift = sequenceBits + workerIdBits;
- /**
- * 时间戳左移动位
- */
+
private final long timestampLeftShift = sequenceBits + workerIdBits + datacenterIdBits;
private final long sequenceMask = -1L ^ (-1L << sequenceBits);
private final long workerId;
- /**
- * 数据标识 ID 部分
- */
+
private final long datacenterId;
- /**
- * 并发控制
- */
+
private long sequence = 0L;
- /**
- * 上次生产 ID 时间戳
- */
+
private long lastTimestamp = -1L;
- /**
- * IP 地址
- */
+
private InetAddress inetAddress;
public SnowflakeIdGenerator(WorkDataCenterId workDataCenterId) {
@@ -83,13 +65,7 @@ public class SnowflakeIdGenerator {
log.debug("Initialization SnowflakeIdGenerator datacenterId:" + this.datacenterId + " workerId:" + this.workerId);
}
}
-
- /**
- * 有参构造器
- *
- * @param workerId 工作机器 ID
- * @param datacenterId 序列号
- */
+
public SnowflakeIdGenerator(long workerId, long datacenterId) {
Assert.isFalse(workerId > maxWorkerId || workerId < 0,
String.format("worker Id can't be greater than %d or less than 0", maxWorkerId));
@@ -99,29 +75,17 @@ public class SnowflakeIdGenerator {
this.datacenterId = datacenterId;
initLog();
}
-
- /**
- * 获取 maxWorkerId
- */
+
protected long getMaxWorkerId(long datacenterId, long maxWorkerId) {
StringBuilder mpid = new StringBuilder();
mpid.append(datacenterId);
String name = ManagementFactory.getRuntimeMXBean().getName();
if (StringUtils.isNotBlank(name)) {
- /*
- * GET jvmPid
- */
mpid.append(name.split("@")[0]);
}
- /*
- * MAC + PID 的 hashcode 获取16个低位
- */
return (mpid.toString().hashCode() & 0xffff) % (maxWorkerId + 1);
}
-
- /**
- * 数据标识id部分
- */
+
protected long getDatacenterId(long maxDatacenterId) {
long id = 0L;
try {
@@ -145,11 +109,12 @@ public class SnowflakeIdGenerator {
}
public long getBase(){
+ int five = 5;
long timestamp = timeGen();
//闰秒
if (timestamp < lastTimestamp) {
long offset = lastTimestamp - timestamp;
- if (offset <= 5) {
+ if (offset <= five) {
try {
wait(offset << 1);
timestamp = timeGen();
@@ -180,35 +145,23 @@ public class SnowflakeIdGenerator {
return timestamp;
}
-
- /**
- * 获取分布式id
- *
- * @return id
- */
+
public synchronized long nextId() {
long timestamp = getBase();
-
- // 时间戳部分 | 数据中心部分 | 机器标识部分 | 序列号部分
- return ((timestamp - twepoch) << timestampLeftShift)
+
+ return ((timestamp - BASIS_TIME) << timestampLeftShift)
| (datacenterId << datacenterIdShift)
| (workerId << workerIdShift)
| sequence;
}
- /**
- * 获取订单编号
- *
- * @return orderNumber
- */
public synchronized long getOrderNumber(long userId,long tableCount) {
long timestamp = getBase();
long sequenceShift = log2N(tableCount);
- // 时间戳部分 | 数据中心部分 | 机器标识部分 | 序列号部分 | 用户id基因
- return ((timestamp - twepoch) << timestampLeftShift)
+ return ((timestamp - BASIS_TIME) << timestampLeftShift)
| (datacenterId << datacenterIdShift)
| (workerId << workerIdShift)
- | (sequence << (sequenceBits - sequenceShift))
+ | (sequence << sequenceShift)
| (userId % tableCount);
}
@@ -223,19 +176,13 @@ public class SnowflakeIdGenerator {
protected long timeGen() {
return SystemClock.now();
}
-
- /**
- * 反解id的时间戳部分
- */
+
public static long parseIdTimestamp(long id) {
- return (id>>22)+twepoch;
+ return (id>>22)+ BASIS_TIME;
}
- /*
- * 求log2(N)
- * */
- public long log2N(long N) {
- return (long)(Math.log(N)/ Math.log(2));
+ public long log2N(long count) {
+ return (long)(Math.log(count)/ Math.log(2));
}
public long getMaxWorkerId() {
diff --git a/damai-id-generator-framework/src/main/java/com/damai/toolkit/WorkAndDataCenterIdHandler.java b/damai-id-generator-framework/src/main/java/com/damai/toolkit/WorkAndDataCenterIdHandler.java
index f160aecfa0669fb8fb8686dc99a55cb26fef9500..79dd17b027d803bdbcd4b7208302687877129c1e 100644
--- a/damai-id-generator-framework/src/main/java/com/damai/toolkit/WorkAndDataCenterIdHandler.java
+++ b/damai-id-generator-framework/src/main/java/com/damai/toolkit/WorkAndDataCenterIdHandler.java
@@ -7,9 +7,8 @@ import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.script.DefaultRedisScript;
import org.springframework.scripting.support.ResourceScriptSource;
+import java.util.Arrays;
import java.util.List;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
/**
* @program: 极度真实还原大麦网高并发实战项目。 添加 阿宽不是程序员 微信,添加时备注 damai 来获取项目的完整资料
@@ -24,9 +23,9 @@ public class WorkAndDataCenterIdHandler {
private final String SNOWFLAKE_DATA_CENTER_ID_key = "snowflake_data_center_id";
- public final List keys = Stream.of(SNOWFLAKE_WORK_ID_KEY,SNOWFLAKE_DATA_CENTER_ID_key).collect(Collectors.toList());
+ public final List keys = Arrays.asList(SNOWFLAKE_WORK_ID_KEY,SNOWFLAKE_DATA_CENTER_ID_key);
- private StringRedisTemplate stringRedisTemplate;
+ private final StringRedisTemplate stringRedisTemplate;
private DefaultRedisScript redisScript;
@@ -44,7 +43,7 @@ public class WorkAndDataCenterIdHandler {
public WorkDataCenterId getWorkAndDataCenterId(){
WorkDataCenterId workDataCenterId = new WorkDataCenterId();
try {
- String[] data = new String[2];
+ Object[] data = new String[2];
data[0] = String.valueOf(IdGeneratorConstant.MAX_WORKER_ID);
data[1] = String.valueOf(IdGeneratorConstant.MAX_DATA_CENTER_ID);
String result = stringRedisTemplate.execute(redisScript, keys, data);
diff --git a/damai-id-generator-framework/src/main/resources/lua/workAndDataCenterId.lua b/damai-id-generator-framework/src/main/resources/lua/workAndDataCenterId.lua
index 10c5e44519243568570919adb9c1b6157a041ffa..20f682f8efd1763e98a013ce346b426886b2982c 100644
--- a/damai-id-generator-framework/src/main/resources/lua/workAndDataCenterId.lua
+++ b/damai-id-generator-framework/src/main/resources/lua/workAndDataCenterId.lua
@@ -1,57 +1,37 @@
--- redis中work_id的key
local snowflake_work_id_key = KEYS[1]
--- redis中data_center_id的key
local snowflake_data_center_id_key = KEYS[2]
--- worker_id的最大阈值
local max_worker_id = tonumber(ARGV[1])
--- data_center_id的最大阈值
local max_data_center_id = tonumber(ARGV[2])
--- 返回的work_id
local return_worker_id = 0
--- 返回的data_center_id
local return_data_center_id = 0
--- work_id初始化flag
local snowflake_work_id_flag = false
--- data_center_id初始化flag
local snowflake_data_center_id_flag = false
--- 构建并返回JSON字符串
local json_result = string.format('{"%s": %d, "%s": %d}',
'workId', return_worker_id,
'dataCenterId', return_data_center_id)
--- 如果work_id不存在,则将值初始化为0
if (redis.call('exists', snowflake_work_id_key) == 0) then
redis.call('set',snowflake_work_id_key,0)
snowflake_work_id_flag = true
end
--- 如果data_center_id不存在,则将值初始化为0
if (redis.call('exists', snowflake_data_center_id_key) == 0) then
redis.call('set',snowflake_data_center_id_key,0)
snowflake_data_center_id_flag = true
end
--- 如果work_id和data_center_id都是初始化了,那么执行返回初始化的值
if (snowflake_work_id_flag and snowflake_data_center_id_flag) then
return json_result
end
--- 获得work_id的值
local snowflake_work_id = tonumber(redis.call('get',snowflake_work_id_key))
--- 获得data_center_id的值
local snowflake_data_center_id = tonumber(redis.call('get',snowflake_data_center_id_key))
--- 如果work_id的值达到了最大阈值
if (snowflake_work_id == max_worker_id) then
- -- 如果data_center_id的值也达到了最大阈值
if (snowflake_data_center_id == max_data_center_id) then
- -- 将work_id的值初始化为0
redis.call('set',snowflake_work_id_key,0)
- -- 将data_center_id的值初始化为0
redis.call('set',snowflake_data_center_id_key,0)
else
- -- 如果data_center_id的值没有达到最大值,将进行自增,并将自增的结果返回
return_data_center_id = redis.call('incr',snowflake_data_center_id_key)
end
else
- -- 如果work_id的值没有达到最大值,将进行自增,并将自增的结果返回
return_worker_id = redis.call('incr',snowflake_work_id_key)
end
return string.format('{"%s": %d, "%s": %d}',
diff --git a/damai-redis-framework/src/main/java/com/damai/core/RedisKeyEnum.java b/damai-redis-framework/src/main/java/com/damai/core/RedisKeyManage.java
similarity index 72%
rename from damai-redis-framework/src/main/java/com/damai/core/RedisKeyEnum.java
rename to damai-redis-framework/src/main/java/com/damai/core/RedisKeyManage.java
index 0610a950af55d233e58aece2592d257ad07897da..37f54869ae9ae14efc0fa26e3faf85ade8a37117 100644
--- a/damai-redis-framework/src/main/java/com/damai/core/RedisKeyEnum.java
+++ b/damai-redis-framework/src/main/java/com/damai/core/RedisKeyManage.java
@@ -6,12 +6,15 @@ package com.damai.core;
* @description: redis key管理
* @author: 阿宽不是程序员
**/
-public enum RedisKeyEnum {
+public enum RedisKeyManage {
+ /**
+ * redis 缓存 key管理
+ * */
Key("key","键值测试","value为TestCacheDto类型","k"),
Key2("key:%s","键值占位测试","value为TestCacheDto类型","k"),
- USER_ID("user_id:%s","userId","value为UserVo类型","k"),
+ USER_LOGIN("user_login_%s_%s","user_login","value为UserVo类型","k"),
PRODUCT_STOCK("product_stock:%S","商品库存id","value为库存","k"),
@@ -65,66 +68,73 @@ public enum RedisKeyEnum {
PROGRAM_CATEGORY_HASH("d_mai_program_category_hash","节目类型hash集合","节目类型hash集合","k"),
+ COUNTER_COUNT("d_mai_counter_count","计数器的值的key","计数器的值","k"),
+
+ COUNTER_TIMESTAMP("d_mai_counter_timestamp","计数器的时间戳的key","计数器的时间戳","k"),
+
+ VERIFY_CAPTCHA_ID("d_mai_verify_captcha_id_%S","校验验证码id的key","校验验证码id","k"),
+
+ TICKET_USER_LIST("d_mai_ticket_user_list_%S","购票人列表的key","购票人列表","k"),
;
/**
* key值
* */
- private String keyCode;
+ private String key;
/**
* key的说明
* */
- private String keyMsg;
+ private String keyIntroduce;
/**
* value的说明
* */
- private String valueMsg;
+ private String valueIntroduce;
/**
* 作者
* */
private String author;
- RedisKeyEnum(String keyCode, String keyMsg, String valueMsg, String author){
- this.keyCode = keyCode;
- this.keyMsg = keyMsg;
- this.valueMsg = valueMsg;
+ RedisKeyManage(String key, String keyIntroduce, String valueIntroduce, String author){
+ this.key = key;
+ this.keyIntroduce = keyIntroduce;
+ this.valueIntroduce = valueIntroduce;
this.author = author;
}
- public static RedisKeyEnum getRc(String keyCode) {
- for (RedisKeyEnum re : RedisKeyEnum.values()) {
- if (re.keyCode.equals(keyCode)) {
+ public static RedisKeyManage getRc(String keyCode) {
+ for (RedisKeyManage re : RedisKeyManage.values()) {
+ if (re.key.equals(keyCode)) {
return re;
}
}
return null;
}
- public String getKeyCode() {
- return keyCode;
+ public String getKey() {
+ return key;
}
- public void setKeyCode(String keyCode) {
- this.keyCode = keyCode;
+ public void setKey(String key) {
+ this.key = key;
}
- public String getKeyMsg() {
- return keyMsg;
+ public String getKeyIntroduce() {
+ return keyIntroduce;
}
- public void setKeyMsg(String keyMsg) {
- this.keyMsg = keyMsg;
+ public void setKeyIntroduce(String keyIntroduce) {
+ this.keyIntroduce = keyIntroduce;
}
- public String getValueMsg() {
- return valueMsg;
+ public String getValueIntroduce() {
+ return valueIntroduce;
}
- public void setValueMsg(String valueMsg) {
- this.valueMsg = valueMsg;
+ public void setValueIntroduce(String valueIntroduce) {
+ this.valueIntroduce = valueIntroduce;
}
public String getAuthor() {
diff --git a/damai-redis-framework/src/main/java/com/damai/redis/CacheUtil.java b/damai-redis-framework/src/main/java/com/damai/redis/CacheUtil.java
index e6d517c345dc042941bda6df9aadf21f65208cf1..cf938b886da67369d2f6cadba116fcc5bc85c858 100644
--- a/damai-redis-framework/src/main/java/com/damai/redis/CacheUtil.java
+++ b/damai-redis-framework/src/main/java/com/damai/redis/CacheUtil.java
@@ -1,7 +1,7 @@
package com.damai.redis;
import com.alibaba.fastjson.util.ParameterizedTypeImpl;
-import com.damai.core.StringUtil;
+import com.damai.util.StringUtil;
import java.lang.reflect.Type;
import java.util.Collection;
import java.util.List;
@@ -53,12 +53,12 @@ public class CacheUtil {
}
/**
- * 检查 redisKeyWrap 中的key是否为空或空的字符串
+ * 检查 redisKeyBuild 中的key是否为空或空的字符串
*
- * @param RedisKeyWrap
+ * @param redisKeyBuild key包装
*/
- public static void checkNotBlank(RedisKeyWrap RedisKeyWrap) {
- if (StringUtil.isEmpty(RedisKeyWrap.getRelKey())) {
+ public static void checkNotBlank(RedisKeyBuild redisKeyBuild) {
+ if (StringUtil.isEmpty(redisKeyBuild.getRelKey())) {
throw new RuntimeException("请求参数缺失");
}
}
@@ -79,9 +79,9 @@ public class CacheUtil {
/**
* 检查 list 是否为空或空的字符串
*
- * @param list
+ * @param list key集合
*/
- public static void checkNotEmpty(Collection list) {
+ public static void checkNotEmpty(Collection> list) {
for (Object o : list) {
if (o == null) {
throw new RuntimeException("请求参数缺失");
@@ -103,7 +103,6 @@ public class CacheUtil {
/**
* 判断 object 是否为空
*
- * @param object
*/
public static boolean isEmpty(Object object) {
if (object == null) {
@@ -113,13 +112,13 @@ public class CacheUtil {
return StringUtil.isEmpty((String) object);
}
if (object instanceof Collection) {
- return ((Collection>)object).size() == 0;
+ return ((Collection>) object).isEmpty();
}
return false;
}
- public static List getBatchKey(Collection list){
- return list.stream().map(RedisKeyWrap::getRelKey).collect(Collectors.toList());
+ public static List getBatchKey(Collection list){
+ return list.stream().map(RedisKeyBuild::getRelKey).collect(Collectors.toList());
}
}
diff --git a/damai-redis-framework/src/main/java/com/damai/redis/RedisCache.java b/damai-redis-framework/src/main/java/com/damai/redis/RedisCache.java
index 2f502f535b2bd5c60cf8d718c6d5b66f63f01153..f1477ed3090cc3e485b85102abc49ac76448668b 100644
--- a/damai-redis-framework/src/main/java/com/damai/redis/RedisCache.java
+++ b/damai-redis-framework/src/main/java/com/damai/redis/RedisCache.java
@@ -24,17 +24,17 @@ public interface RedisCache {
/**
* 获取字符串对象
*
- * @param RedisKeyWrap RedisKeyWrap
+ * @param redisKeyBuild RedisKeyBuild
* @param clazz 类对象
* @param T
* @return T 普通对象
*/
- T get(RedisKeyWrap RedisKeyWrap, Class clazz);
+ T get(RedisKeyBuild redisKeyBuild, Class clazz);
/**
* 获取字符串对象(如果缓存中不存在,则执行给定的supplier接口)
*
- * @param RedisKeyWrap RedisKeyWrap
+ * @param redisKeyBuild RedisKeyBuild
* @param clazz 类对象
* @param T
* @param supplier 缓存为空时,执行的逻辑
@@ -42,39 +42,39 @@ public interface RedisCache {
* @param timeUnit 时间单位
* @return T 普通对象
*/
- T get(RedisKeyWrap RedisKeyWrap, Class clazz, Supplier supplier, long ttl, TimeUnit timeUnit);
+ T get(RedisKeyBuild redisKeyBuild, Class clazz, Supplier supplier, long ttl, TimeUnit timeUnit);
/**
* 返回 key 中字符串值的子字符
- * @param RedisKeyWrap
- * @param start
- * @param end
- * @return
+ * @param redisKeyBuild 缓存key
+ * @param start 开始
+ * @param end 结束
+ * @return 结果
*/
- String getRange(RedisKeyWrap RedisKeyWrap, long start, long end);
+ String getRange(RedisKeyBuild redisKeyBuild, long start, long end);
/**
* 获取字符串对象, 并且字符串中是集合内容
*
- * @param RedisKeyWrap
- * @param clazz
- * @param
+ * @param redisKeyBuild 缓存key
+ * @param clazz 类型
+ * @param 指定泛型
* @return List
*/
- List getValueIsList(RedisKeyWrap RedisKeyWrap, Class clazz);
+ List getValueIsList(RedisKeyBuild redisKeyBuild, Class clazz);
/**
* 获取字符串对象, 并且字符串中是集合内容(如果缓存中不存在,则执行给定的supplier接口)
*
- * @param RedisKeyWrap
- * @param clazz
- * @param
+ * @param redisKeyBuild 缓存key
+ * @param clazz 类型
+ * @param 指定泛型
* @param supplier 缓存为空时,执行的逻辑
* @param ttl 过期时间
* @param timeUnit 时间单位
* @return List
*/
- List getValueIsList(RedisKeyWrap RedisKeyWrap, Class clazz, Supplier> supplier,long ttl, TimeUnit timeUnit);
+ List getValueIsList(RedisKeyBuild redisKeyBuild, Class clazz, Supplier> supplier, long ttl, TimeUnit timeUnit);
/**
@@ -83,75 +83,74 @@ public interface RedisCache {
* @param keyList key集合
* @return List
*/
- List getKeys(List keyList);
+ List getKeys(List keyList);
/**
* 判断key是否存在
*
- * @param RedisKeyWrap RedisKeyWrap
+ * @param redisKeyBuild redisKeyBuild
* @return 是否存在 可能为空
*/
- Boolean hasKey(RedisKeyWrap RedisKeyWrap);
+ Boolean hasKey(RedisKeyBuild redisKeyBuild);
/**
* 删除key
*
- * @param RedisKeyWrap
+ * @param redisKeyBuild 缓存key
* @return
*/
- void del(RedisKeyWrap RedisKeyWrap);
+ void del(RedisKeyBuild redisKeyBuild);
/**
* 批量删除key
*
- * @param keys
- * @return
+ * @param keys key集合
*/
- void del(Collection keys);
+ void del(Collection keys);
/**
* 设置key过期时间
*
- * @param RedisKeyWrap RedisKeyWrap
+ * @param redisKeyBuild RedisKeyBuild
* @param ttl 过期时间
* @param timeUnit 时间单位
* @return 是否成功
*/
- Boolean expire(RedisKeyWrap RedisKeyWrap, long ttl, TimeUnit timeUnit);
+ Boolean expire(RedisKeyBuild redisKeyBuild, long ttl, TimeUnit timeUnit);
/**
* 获取key超时时间
*
- * @param RedisKeyWrap RedisKeyWrap
+ * @param redisKeyBuild redisKeyBuild
* @return 超时时间
*/
- Long getExpire(RedisKeyWrap RedisKeyWrap);
+ Long getExpire(RedisKeyBuild redisKeyBuild);
/**
* 查找匹配的key
*
- * @param pattern
- * @return
+ * @param pattern 缓存key
+ * @return keys
*/
Set keys(String pattern);
/**
* 将当前数据库的 key 移动到给定的数据库 db 当中
*
- * @param RedisKeyWrap
+ * @param redisKeyBuild 缓存key
* @param dbIndex
* @return
*/
- Boolean move(RedisKeyWrap RedisKeyWrap, int dbIndex);
+ Boolean move(RedisKeyBuild redisKeyBuild, int dbIndex);
/**
* 移除 key 的过期时间,key 将持久保持
*
- * @param RedisKeyWrap
+ * @param redisKeyBuild 缓存key
* @return
*/
- Boolean persist(RedisKeyWrap RedisKeyWrap);
+ Boolean persist(RedisKeyBuild redisKeyBuild);
/**
* 从当前数据库中随机返回一个 key
@@ -163,439 +162,439 @@ public interface RedisCache {
/**
* 修改 key 的名称
*
- * @param oldKey
- * @param newKey
+ * @param oldKey 缓存key
+ * @param newKey 缓存key
*/
- void rename(RedisKeyWrap oldKey, RedisKeyWrap newKey);
+ void rename(RedisKeyBuild oldKey, RedisKeyBuild newKey);
/**
- * 仅当 newkey 不存在时,将 oldKey 改名为 newkey
+ * 仅当 newKey 不存在时,将 oldKey 改名为 newKey
*
- * @param oldKey
- * @param newKey
+ * @param oldKey 缓存key
+ * @param newKey 缓存key
* @return
*/
- Boolean renameIfAbsent(RedisKeyWrap oldKey, RedisKeyWrap newKey);
+ Boolean renameIfAbsent(RedisKeyBuild oldKey, RedisKeyBuild newKey);
/**
* 返回 key 所储存的值的类型
*
- * @param RedisKeyWrap
+ * @param redisKeyBuild 缓存key
* @return
*/
- DataType type(RedisKeyWrap RedisKeyWrap);
+ DataType type(RedisKeyBuild redisKeyBuild);
/**
* 设置缓存
*
- * @param RedisKeyWrap 缓存key
+ * @param redisKeyBuild 缓存key
* @param object 缓存对象
*/
- void set(RedisKeyWrap RedisKeyWrap, Object object);
+ void set(RedisKeyBuild redisKeyBuild, Object object);
/**
* 设置缓存
*
- * @param RedisKeyWrap 缓存key
+ * @param redisKeyBuild 缓存key
* @param object 缓存对象
* @param ttl 过期时间
*/
- void set(RedisKeyWrap RedisKeyWrap, Object object, long ttl);
+ void set(RedisKeyBuild redisKeyBuild, Object object, long ttl);
/**
* 设置缓存
*
- * @param RedisKeyWrap 缓存key
+ * @param redisKeyBuild 缓存key
* @param object 缓存对象
* @param ttl 过期时间
* @param timeUnit 时间单位
*/
- void set(RedisKeyWrap RedisKeyWrap, Object object, long ttl, TimeUnit timeUnit);
+ void set(RedisKeyBuild redisKeyBuild, Object object, long ttl, TimeUnit timeUnit);
/**
* 只有在 key 不存在时设置 key 的值
*
- * @param RedisKeyWrap
- * @param object
+ * @param redisKeyBuild 缓存key
+ * @param object 对象
* @return 之前已经存在返回false,不存在返回true
*/
- boolean setIfAbsent(RedisKeyWrap RedisKeyWrap, Object object);
+ boolean setIfAbsent(RedisKeyBuild redisKeyBuild, Object object);
/**
* 获取字符串的长度
*
- * @param RedisKeyWrap
- * @return
+ * @param redisKeyBuild 缓存key
+ * @return 长度
*/
- Long size(RedisKeyWrap RedisKeyWrap);
+ Long size(RedisKeyBuild redisKeyBuild);
/**
* 批量添加
*
- * @param map
+ * @param map 对象
*/
- void multiSet(Map map);
+ void multiSet(Map map);
/**
* 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在
*
- * @param map
+ * @param map 对象
* @return 之前已经存在返回false,不存在返回true
*/
- boolean multiSetIfAbsent(Map map);
+ boolean multiSetIfAbsent(Map map);
/**
* 增加(自增长), 负数则为自减
*
- * @param RedisKeyWrap
- * @param increment
+ * @param redisKeyBuild 缓存key
+ * @param increment 步长
* @return
*/
- Long incrBy(RedisKeyWrap RedisKeyWrap, long increment);
+ Long incrBy(RedisKeyBuild redisKeyBuild, long increment);
/**
* double类型增加(自增长), 负数则为自减
- * @param RedisKeyWrap
- * @param increment
+ * @param redisKeyBuild 缓存key
+ * @param increment 步长
* @return
*/
- Double incrByDouble(RedisKeyWrap RedisKeyWrap, double increment);
+ Double incrByDouble(RedisKeyBuild redisKeyBuild, double increment);
/**
* 追加到末尾
*
- * @param RedisKeyWrap
- * @param value
+ * @param redisKeyBuild 缓存key
+ * @param value 值
* @return
*/
- Integer append(RedisKeyWrap RedisKeyWrap, String value);
+ Integer append(RedisKeyBuild redisKeyBuild, String value);
/** -------------------hash相关操作------------------------- */
/**
* 放置一个键值对
*
- * @param RedisKeyWrap hash键
+ * @param redisKeyBuild hash键
* @param hashKey hash key
* @param value hash value
*/
- void putHash(RedisKeyWrap RedisKeyWrap, String hashKey, Object value);
+ void putHash(RedisKeyBuild redisKeyBuild, String hashKey, Object value);
/**
* 放置一个键值对 并设置过期时间
*
- * @param RedisKeyWrap hash键
+ * @param redisKeyBuild hash键
* @param hashKey hash key
* @param value hash value
* @param ttl 过期时间
*/
- void putHash(RedisKeyWrap RedisKeyWrap, String hashKey, Object value, long ttl);
+ void putHash(RedisKeyBuild redisKeyBuild, String hashKey, Object value, long ttl);
/**
* 放置一个键值对 并设置过期时间
*
- * @param RedisKeyWrap hash键
+ * @param redisKeyBuild hash键
* @param hashKey hash key
* @param value hash value
* @param ttl 过期时间
* @param timeUnit 时间单位
*/
- void putHash(RedisKeyWrap RedisKeyWrap, String hashKey, Object value, long ttl, TimeUnit timeUnit);
+ void putHash(RedisKeyBuild redisKeyBuild, String hashKey, Object value, long ttl, TimeUnit timeUnit);
/**
* 放入map中所有键值对
*
- * @param RedisKeyWrap key
+ * @param redisKeyBuild key
* @param map hash
*/
- void putHash(RedisKeyWrap RedisKeyWrap, Map map);
+ void putHash(RedisKeyBuild redisKeyBuild, Map map);
/**
* 放入map中所有键值对 并设置过期时间
*
- * @param RedisKeyWrap key
+ * @param redisKeyBuild key
* @param map hash
* @param ttl 过期时间
*/
- void putHash(RedisKeyWrap RedisKeyWrap, Map map, long ttl);
+ void putHash(RedisKeyBuild redisKeyBuild, Map map, long ttl);
/**
* 放入 Map 中所有键值对 并设置过期时间和时间单位
*
- * @param RedisKeyWrap key
+ * @param redisKeyBuild key
* @param map hash
* @param ttl 过期时间
* @param timeUnit 时间单位
*/
- void putHash(RedisKeyWrap RedisKeyWrap, Map map, long ttl, TimeUnit timeUnit);
+ void putHash(RedisKeyBuild redisKeyBuild, Map map, long ttl, TimeUnit timeUnit);
/**
* 仅当hashKey不存在时才设置
*
- * @param RedisKeyWrap
- * @param hashKey
- * @param value
+ * @param redisKeyBuild 缓存key
+ * @param hashKey hash中key
+ * @param value 对象
* @return
*/
- Boolean putHashIfAbsent(RedisKeyWrap RedisKeyWrap, String hashKey, Object value);
+ Boolean putHashIfAbsent(RedisKeyBuild redisKeyBuild, String hashKey, Object value);
/**
* 从 Hash 中获取普通对象
*
- * @param RedisKeyWrap key
+ * @param redisKeyBuild key
* @param hashKey hash key
* @param clazz 类对象
* @param T
* @return 普通对象
*/
@SuppressWarnings("all")
- T getForHash(RedisKeyWrap RedisKeyWrap, String hashKey, Class clazz);
+ T getForHash(RedisKeyBuild redisKeyBuild, String hashKey, Class clazz);
/**
* Hash的value是字符串集合,进行提取
*
- * @param RedisKeyWrap key
+ * @param redisKeyBuild key
* @param hashKey hash key
* @param clazz 类对象
* @param T
* @return 普通对象
*/
- List getValueIsListForHash(RedisKeyWrap RedisKeyWrap, String hashKey, Class clazz);
+ List getValueIsListForHash(RedisKeyBuild redisKeyBuild, String hashKey, Class clazz);
/**
* 从 {@code key} 处获取给定 {@code hashKeys} 的值
*
- * @param RedisKeyWrap key
+ * @param redisKeyBuild key
* @param hashKeys hashKeys
* @param clazz 类对象
* @param T
* @return
*/
- List multiGetForHash(RedisKeyWrap RedisKeyWrap, List hashKeys, Class clazz);
+ List multiGetForHash(RedisKeyBuild redisKeyBuild, List hashKeys, Class clazz);
/**
* 谨慎使用!
* 获取 Hash Key 下所有值
*
- * @param RedisKeyWrap
- * @param clazz
- * @param
+ * @param redisKeyBuild 缓存key
+ * @param clazz 类型
+ * @param 泛型
* @return
*/
- List getAllForHash(RedisKeyWrap RedisKeyWrap, Class clazz);
+ List getAllForHash(RedisKeyBuild redisKeyBuild, Class clazz);
/**
* 谨慎使用!
* 获取 Hash Key 下所有值,返回值为map
*
- * @param RedisKeyWrap
- * @param clazz
- * @param
+ * @param redisKeyBuild 缓存key
+ * @param clazz 类型
+ * @param 泛型
* @return
*/
- Map getAllMapForHash(RedisKeyWrap RedisKeyWrap, Class clazz);
+ Map getAllMapForHash(RedisKeyBuild redisKeyBuild, Class clazz);
/**
* 判断hash中 key是否存在
*
- * @param RedisKeyWrap
- * @param hashKey
- * @return
+ * @param redisKeyBuild 缓存key
+ * @param hashKey hash中key
+ * @return 结果
*/
- Boolean hasKeyForHash(RedisKeyWrap RedisKeyWrap, String hashKey);
+ Boolean hasKeyForHash(RedisKeyBuild redisKeyBuild, String hashKey);
/**
* 删除hash key
*
- * @param RedisKeyWrap
- * @param hashKey
- * @return
+ * @param redisKeyBuild 缓存key
+ * @param hashKey hash中key
+ * @return 结果
*/
- Long delForHash(RedisKeyWrap RedisKeyWrap, String hashKey);
+ Long delForHash(RedisKeyBuild redisKeyBuild, String hashKey);
/**
* 批量删除hash key
*
- * @param RedisKeyWrap
- * @param hashKeys
- * @return
+ * @param redisKeyBuild 缓存key
+ * @param hashKeys hash中key
+ * @return 结果
*/
- Long delForHash(RedisKeyWrap RedisKeyWrap, Collection hashKeys);
+ Long delForHash(RedisKeyBuild redisKeyBuild, Collection hashKeys);
/**
* 为哈希表 key 中的指定字段的整数值加上增量 increment
*
- * @param RedisKeyWrap
- * @param hashKey
- * @param increment
- * @return
+ * @param redisKeyBuild 缓存key
+ * @param hashKey hash中key
+ * @param increment 步长
+ * @return 结果
*/
- Long incrByForHash(RedisKeyWrap RedisKeyWrap, String hashKey, long increment);
+ Long incrByForHash(RedisKeyBuild redisKeyBuild, String hashKey, long increment);
/**
* 为哈希表 key 中的指定字段的整数值加上增量 increment(double类型)
*
- * @param RedisKeyWrap
- * @param hashKey
- * @param delta
- * @return
+ * @param redisKeyBuild 缓存key
+ * @param hashKey hash中key
+ * @param delta 步长
+ * @return 结果
*/
- Double incrByDoubleForHash(RedisKeyWrap RedisKeyWrap, String hashKey, double delta);
+ Double incrByDoubleForHash(RedisKeyBuild redisKeyBuild, String hashKey, double delta);
/**
* 获取所有哈希表中的hashKey
*
- * @param RedisKeyWrap
- * @return
+ * @param redisKeyBuild 缓存key
+ * @return 结果
*/
- Set hashKeysForHash(RedisKeyWrap RedisKeyWrap);
+ Set hashKeysForHash(RedisKeyBuild redisKeyBuild);
/**
* 获取哈希表中字段的数量
*
- * @param RedisKeyWrap
- * @return
+ * @param redisKeyBuild 缓存key
+ * @return 结果
*/
- Long sizeForHash(RedisKeyWrap RedisKeyWrap);
+ Long sizeForHash(RedisKeyBuild redisKeyBuild);
/** ------------------------list相关操作---------------------------- */
/**
* 通过索引获取列表中的元素
*
- * @param RedisKeyWrap
- * @param index
- * @param clazz
- * @return
+ * @param redisKeyBuild 缓存key
+ * @param index 索引
+ * @param clazz 类型
+ * @return 结果
*/
- T indexForList(RedisKeyWrap RedisKeyWrap, long index, Class clazz);
+ T indexForList(RedisKeyBuild redisKeyBuild, long index, Class clazz);
/**
* List 从左边放入元素
*
- * @param RedisKeyWrap key
+ * @param redisKeyBuild key
* @param value value
* @return 改动行数
*/
- Long leftPushForList(RedisKeyWrap RedisKeyWrap, Object value);
+ Long leftPushForList(RedisKeyBuild redisKeyBuild, Object value);
/**
* List 从左边放入元素
*
- * @param RedisKeyWrap key
+ * @param redisKeyBuild key
* @param valueList valueList
* @return 改动行数
*/
- Long leftPushAllForList(RedisKeyWrap RedisKeyWrap, List