|
@@ -228,9 +228,9 @@ public final class RedisContextHolder {
|
|
|
* 批量设置带过期时间的hash值
|
|
|
*/
|
|
|
private static final RedisScript<Boolean> HSET_WITH_DURATION_SCRIPT = new DefaultRedisScript<>(
|
|
|
- "local values = {} for i = 2, #ARGV do table.insert(values, ARGV[i]) end " +
|
|
|
- "return redis.call('HSET', KEYS[1], unpack(values)) and redis.call('EXPIRE', KEYS[1], ARGV[1])",
|
|
|
- Boolean.class
|
|
|
+ "local values = {} for i = 2, #KEYS do table.insert(values, KEYS[i]) " +
|
|
|
+ "table.insert(values, ARGV[i]) end return redis.call('HSET', KEYS[1], unpack(values)) " +
|
|
|
+ "and redis.call('EXPIRE', KEYS[1], ARGV[1])", Boolean.class
|
|
|
);
|
|
|
|
|
|
/**
|
|
@@ -1078,11 +1078,9 @@ public final class RedisContextHolder {
|
|
|
* @param key 键名称
|
|
|
* @param values hash键/值对
|
|
|
* @param duration 有效时间
|
|
|
- * @param <K> 键类型
|
|
|
- * @param <V> 值类型
|
|
|
* @return true/false
|
|
|
*/
|
|
|
- public static <K, V> boolean put(@NonNull String key, @NonNull Map<K, V> values, @NonNull Duration duration) {
|
|
|
+ public static boolean put(@NonNull String key, @NonNull Map<String, ?> values, @NonNull Duration duration) {
|
|
|
return put(getRedisTemplate(), key, values, duration);
|
|
|
}
|
|
|
|
|
@@ -1097,19 +1095,21 @@ public final class RedisContextHolder {
|
|
|
* @param <V> 值类型
|
|
|
* @return true/false
|
|
|
*/
|
|
|
- public static <K, HK, HV> boolean put(@NonNull RedisTemplate<K, ?> template, @NonNull K key,
|
|
|
- @NonNull Map<HK, HV> values, @NonNull Duration duration) {
|
|
|
+ public static <K, V> boolean put(@NonNull RedisTemplate<K, ?> template, @NonNull K key, @NonNull Map<K, V> values,
|
|
|
+ @NonNull Duration duration) {
|
|
|
if (ObjectUtils.isEmpty(values)) {
|
|
|
return false;
|
|
|
}
|
|
|
+ List<K> keys = Lists.newArrayListWithCapacity(values.size() + 1);
|
|
|
+ keys.add(key);
|
|
|
Object[] args = new Object[values.size() + 1];
|
|
|
int i = 0;
|
|
|
args[i++] = duration.getSeconds();
|
|
|
- for (Map.Entry<?, ?> entry : values.entrySet()) {
|
|
|
- args[i++] = entry.getKey();
|
|
|
+ for (Map.Entry<K, ?> entry : values.entrySet()) {
|
|
|
+ keys.add(entry.getKey());
|
|
|
args[i++] = entry.getValue();
|
|
|
}
|
|
|
- return Boolean.TRUE.equals(template.execute(HSET_WITH_DURATION_SCRIPT, Collections.singletonList(key), args));
|
|
|
+ return Boolean.TRUE.equals(template.execute(HSET_WITH_DURATION_SCRIPT, keys, args));
|
|
|
}
|
|
|
|
|
|
/**
|