public class RedisOps extends Object
本类参考类 CacheChanel 源码 同时参考redis 使用手册: http://redisdoc.com/
加锁解决缓存击穿, 缓存空值解决缓存穿透。参考:
https://blog.csdn.net/haoxin963/article/details/83245113
| 构造器和说明 |
|---|
RedisOps(org.springframework.data.redis.core.RedisTemplate<String,Object> redisTemplate,
org.springframework.data.redis.core.StringRedisTemplate stringRedisTemplate,
boolean defaultCacheNullVal) |
| 限定符和类型 | 方法和说明 |
|---|---|
Integer |
append(String key,
String value)
如果键 key 已经存在并且它的值是一个字符串, APPEND 命令将把 value 追加到键 key 现有值的末尾。
|
Long |
decr(CacheKey key)
为键 key 储存的数字值减去一。
|
Long |
decrBy(CacheKey key,
long decrement)
将 key 所储存的值减去减量 decrement 。
|
Long |
del(CacheKey... keys)
删除给定的一个 key 或 多个key
不存在的 key 会被忽略。
|
Long |
del(Collection<CacheKey> keys)
删除给定的一个 key 或 多个key
不存在的 key 会被忽略。
|
Long |
del(List<String> keys)
删除给定的一个 key 或 多个key
不存在的 key 会被忽略。
|
Long |
del(String... keys)
删除给定的一个 key 或 多个key
不存在的 key 会被忽略。
|
Boolean |
exists(String key)
检查给定 key 是否存在。
|
Boolean |
expire(String key,
Duration timeout)
为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除。
|
Boolean |
expire(String key,
long seconds)
为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除。
|
Boolean |
expireAt(String key,
Date date)
EXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置生存时间。
|
Boolean |
expireAt(String key,
long unixTimestamp)
EXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置生存时间。
|
<T> T |
get(CacheKey key,
boolean... cacheNullValues)
返回与键 key 相关联的 value 值
如果键 key 不存在, 那么返回特殊值 null ; 否则, 返回键 key 的值。
|
<T> T |
get(CacheKey key,
Function<CacheKey,T> loader,
boolean... cacheNullValues)
返回与键 key 相关联的 value 值
如果键 key 不存在, 那么返回特殊值 null ; 否则, 返回键 key 的值。
|
<T> T |
get(String key,
boolean... cacheNullValues)
返回与键 key 相关联的 value 值
如果键 key 不存在, 那么返回特殊值 null ; 否则, 返回键 key 的值。
|
<T> T |
get(String key,
Function<String,T> loader,
boolean... cacheNullValues)
返回与键 key 相关联的 value 值
如果值不存在, 那么调用 loader 方法获取数据后,set 到缓存
|
Long |
getCounter(CacheKey key,
Function<CacheKey,Long> loader)
获取key中存放的Long值
|
Long |
getCounter(CacheKey key,
Long... defaultValue)
获取key中存放的Long值
|
String |
getRange(String key,
long start,
long end)
返回键 key 储存的字符串值的指定部分, 字符串的截取范围由 start 和 end 两个偏移量决定 (包括 start 和 end 在内)。
|
<T> T |
getSet(String key,
Object value)
将键 key 的值设为 value , 并返回键 key 在被设置之前的旧值。
|
Long |
hDel(CacheHashKey key) |
Long |
hDel(String key,
Object... fields)
删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。
|
Boolean |
hExists(CacheHashKey cacheHashKey)
检查给定域 field 是否存在于哈希表 hash 当中
|
Boolean |
hExists(String key,
Object field)
检查给定域 field 是否存在于哈希表 hash 当中
|
<T> T |
hGet(CacheHashKey key,
boolean... cacheNullValues)
返回哈希表 key 中给定域 field 的值。
|
<T> T |
hGet(CacheHashKey key,
Function<CacheHashKey,T> loader,
boolean... cacheNullValues)
返回哈希表 key 中给定域 field 的值。
|
<T> T |
hGet(String key,
Object field,
BiFunction<String,Object,T> loader,
boolean... cacheNullValues)
返回哈希表 key 中给定域 field 的值。
|
<T> T |
hGet(String key,
Object field,
boolean... cacheNullValues)
返回哈希表 key 中给定域 field 的值。
|
<K,V> Map<K,V> |
hGetAll(CacheHashKey key) |
<K,V> Map<K,V> |
hGetAll(CacheHashKey key,
Function<CacheHashKey,Map<K,V>> loader,
boolean... cacheNullValues)
返回哈希表 key 中给定域 field 的值。
|
<K,V> Map<K,V> |
hGetAll(String key)
返回哈希表 key 中,所有的域和值。
|
Long |
hIncrBy(CacheHashKey key,
long increment)
为哈希表 key 中的域 field 的值加上增量 increment 。
|
Double |
hIncrByFloat(CacheHashKey key,
double increment)
为哈希表 key 中的域 field 加上浮点数增量 increment 。
|
<HK> Set<HK> |
hKeys(String key)
返回哈希表 key 中的所有域。
|
Long |
hLen(String key)
返回哈希表 key 中域的数量。
|
List<Object> |
hmGet(String key,
Collection<Object> fields)
返回哈希表 key 中,一个或多个给定域的值。
|
List<Object> |
hmGet(String key,
Object... fields)
返回哈希表 key 中,一个或多个给定域的值。
|
<K,V> void |
hmSet(String key,
Map<K,V> hash,
boolean... cacheNullValues)
同时将多个 field-value (域-值)对设置到哈希表 key 中。
|
void |
hSet(CacheHashKey key,
Object value,
boolean... cacheNullValues)
将哈希表 key 中的域 field 的值设为 value 。
|
void |
hSet(String key,
Object field,
Object value,
boolean... cacheNullValues)
将哈希表 key 中的域 field 的值设为 value 。
|
Long |
hStrLen(String key,
Object field)
返回哈希表 key 中, 与给定域 field 相关联的值的字符串长度
|
<HV> List<HV> |
hVals(String key)
返回哈希表 key 中所有域的值。
|
Long |
incr(CacheKey key)
为键 key 储存的数字值加上一。
|
Long |
incrBy(CacheKey key,
long increment)
为键 key 储存的数字值加上增量 increment 。
|
Double |
incrByFloat(CacheKey key,
double increment)
为键 key 储存的值加上浮点数增量 increment 。
|
Set<String> |
keys(String pattern)
查找所有符合给定模式 pattern 的 key 。
|
<T> T |
lIndex(String key,
long index)
返回列表 key 中,下标为 index 的元素。
|
Long |
lInsert(String key,
Object pivot,
Object value)
将值 value 插入到列表 key 当中,位于值 pivot 之前。
|
Long |
lLen(String key)
返回列表 key 的长度。
|
<T> T |
lPop(String key)
移除并返回列表 key 的头元素
|
Long |
lPush(String key,
Collection<Object> values)
将一个或多个值 value 插入到列表 key 的表头
如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表头: 比如说,对空列表 mylist 执行命令 LPUSH mylist a b c ,列表的值将是 c b a ,这等同于原子性地执行 LPUSH mylist a 、 LPUSH mylist b 和 LPUSH mylist c 三个命令。
|
Long |
lPush(String key,
Object... values)
将一个或多个值 value 插入到列表 key 的表头
如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表头: 比如说,对空列表 mylist 执行命令 LPUSH mylist a b c ,列表的值将是 c b a ,这等同于原子性地执行 LPUSH mylist a 、 LPUSH mylist b 和 LPUSH mylist c 三个命令。
|
Long |
lPushX(String key,
Object values)
将值 value 插入到列表 key 的表头,当且仅当 key 存在并且是一个列表。
|
List<Object> |
lRange(String key,
long start,
long end)
返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。
|
Long |
lRem(String key,
long count,
Object value)
根据参数 count 的值,移除列表中与参数 value 相等的元素。
|
void |
lSet(String key,
long index,
Object value)
将列表 key 下标为 index 的元素的值设置为 value 。
|
void |
lTrim(String key,
long start,
long end)
对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
|
<T> List<T> |
mGet(CacheKey... keys)
返回所有(一个或多个)给定 key 的值, 值按请求的键的顺序返回。
|
<T> List<T> |
mGet(Collection<String> keys)
返回所有(一个或多个)给定 key 的值, 值按请求的键的顺序返回。
|
<T> List<T> |
mGet(String... keys)
返回所有(一个或多个)给定 key 的值, 值按请求的键的顺序返回。
|
<T> List<T> |
mGetByCacheKey(Collection<CacheKey> cacheKeys)
返回所有(一个或多个)给定 key 的值, 值按请求的键的顺序返回。
|
Boolean |
move(String key,
int dbIndex)
将当前数据库的 key 移动到给定的数据库 db 当中。
|
void |
mSet(Map<String,Object> map)
同时为一个或多个键设置值。
|
void |
mSet(Map<String,Object> map,
boolean cacheNullVal)
同时为一个或多个键设置值。
|
void |
mSetNx(Map<String,Object> map)
当且仅当所有给定键都不存在时, 为所有给定键设置值。
|
void |
mSetNx(Map<String,Object> map,
boolean cacheNullVal)
当且仅当所有给定键都不存在时, 为所有给定键设置值。
|
Boolean |
persist(String key)
移除给定 key 的生存时间,将这个 key 从『易失的』(带生存时间 key )转换成『持久的』(一个不带生存时间、永不过期的 key )。
|
Boolean |
pExpire(String key,
long milliseconds)
这个命令和 EXPIRE 命令的作用类似,但是它以毫秒为单位设置 key 的生存时间,而不像 EXPIRE 命令那样,以秒为单位。
|
Long |
pTtl(String key)
这个命令类似于 TTL 命令,但它以毫秒为单位返回 key 的剩余生存时间,而不是像 TTL 命令那样,以秒为单位。
|
String |
randomKey()
从当前数据库中随机返回(不删除)一个 key 。
|
void |
rename(String oldKey,
String newKey)
将 key 改名为 newkey 。
|
Boolean |
renameNx(String oldKey,
String newKey)
当且仅当 newkey 不存在时,将 key 改名为 newkey 。
|
Long |
rInsert(String key,
Object pivot,
Object value)
将值 value 插入到列表 key 当中,位于值 pivot 之后。
|
<T> T |
rPop(String key)
移除并返回列表 key 的尾元素。
|
<T> T |
rPoplPush(String sourceKey,
String destinationKey)
命令 RPOPLPUSH 在一个原子时间内,执行以下两个动作:
1.将列表 source 中的最后一个元素(尾元素)弹出,并返回给客户端。
|
Long |
rPush(String key,
Collection<Object> values)
将一个或多个值 value 插入到列表 key 的表尾(最右边)。
|
Long |
rPush(String key,
Object... values)
将一个或多个值 value 插入到列表 key 的表尾(最右边)。
|
Long |
rPushX(String key,
Object value)
将值 value 插入到列表 key 的表尾,当且仅当 key 存在并且是一个列表。
|
<V> Long |
sAdd(CacheKey key,
Collection<V> members)
将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。
|
<V> Long |
sAdd(CacheKey key,
V... members)
将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。
|
List<String> |
scan(String pattern)
查找所有符合给定模式 pattern 的 key 。
|
void |
scanUnlink(String pattern)
批量扫描后删除 匹配到的key
|
Long |
sCard(CacheKey key)
返回集合 key 的基数(集合中元素的数量)。
|
<V> Set<V> |
sDiff(CacheKey key,
CacheKey otherKey)
返回一个集合的全部成员,该集合是所有给定集合之间的差集。
|
<V> Set<V> |
sDiff(Collection<CacheKey> otherKeys)
返回一个集合的全部成员,该集合是所有给定集合之间的差集。
|
Long |
sDiffStore(CacheKey key,
CacheKey otherKey,
CacheKey distKey)
这个命令的作用和 SDIFF key [key …] 类似,但它将结果保存到 destination 集合,而不是简单地返回结果集。
|
Long |
sDiffStore(Collection<CacheKey> otherKeys,
CacheKey distKey)
返回一个集合的全部成员,该集合是所有给定集合之间的差集。
|
void |
set(CacheKey cacheKey,
Object value,
boolean... cacheNullValues)
设置缓存
|
void |
set(String key,
Object value,
boolean... cacheNullValues)
将字符串值 value 存放到 key 。
|
void |
setEx(String key,
Object value,
Duration timeout,
boolean... cacheNullValues)
将键 key 的值设置为 value , 并将键 key 的生存时间设置为 seconds 秒钟。
|
void |
setEx(String key,
Object value,
long seconds,
boolean... cacheNullValues)
将键 key 的值设置为 value , 并将键 key 的生存时间设置为 seconds 秒钟。
|
Boolean |
setNx(String key,
String value,
boolean... cacheNullValues)
只在键 key 不存在的情况下, 将键 key 的值设置为 value 。
|
void |
setRange(String key,
String value,
long offset)
从偏移量 offset 开始, 用 value 参数覆写(overwrite)键 key 储存的字符串值。
|
Boolean |
setXx(String key,
String value,
boolean... cacheNullValues)
如果存在key,则设置key以保存字符串值。
|
Boolean |
setXx(String key,
String value,
Duration timeout,
boolean... cacheNullValues)
如果存在key,则设置key以保存字符串值。
|
Boolean |
setXx(String key,
String value,
long seconds,
boolean... cacheNullValues)
如果存在key,则设置key以保存字符串值。
|
<V> Set<V> |
sInter(CacheKey key,
CacheKey otherKey)
返回一个集合的全部成员,该集合是所有给定集合的交集。
|
Set<Object> |
sInter(CacheKey key,
Collection<CacheKey> otherKeys)
返回一个集合的全部成员,该集合是所有给定集合的交集。
|
<V> Set<V> |
sInter(Collection<CacheKey> otherKeys)
返回一个集合的全部成员,该集合是所有给定集合的交集。
|
Long |
sInterStore(CacheKey key,
CacheKey otherKey,
CacheKey destKey)
这个命令类似于 SINTER key [key …] 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。
|
Long |
sInterStore(CacheKey key,
Collection<CacheKey> otherKeys,
CacheKey destKey)
这个命令类似于 SINTER key [key …] 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。
|
Long |
sInterStore(Collection<CacheKey> otherKeys,
CacheKey destKey)
这个命令类似于 SINTER key [key …] 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。
|
Boolean |
sIsMember(CacheKey key,
Object member)
判断 member 元素是否集合 key 的成员。
|
<V> Set<V> |
sMembers(CacheKey key)
返回集合 key 中的所有成员。
|
<V> Boolean |
sMove(CacheKey sourceKey,
CacheKey destinationKey,
V value)
将 member 元素从 source 集合移动到 destination 集合。
|
<T> T |
sPop(CacheKey key)
移除并返回集合中的一个随机元素。
|
<T> T |
sRandMember(CacheKey key)
返回集合中的一个随机元素。
|
<V> Set<V> |
sRandMember(CacheKey key,
long count)
返回集合中的count个随机元素。
|
<V> List<V> |
sRandMembers(CacheKey key,
long count)
返回集合中的count个随机元素。
|
Long |
sRem(CacheKey key,
Object... members)
移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略。
|
Long |
strLen(String key)
返回键 key 储存的字符串值的长度
|
<V> Set<V> |
sUnion(CacheKey key,
CacheKey otherKey)
返回多个集合的并集,多个集合由 keys 指定
不存在的 key 被视为空集。
|
<V> Set<V> |
sUnion(CacheKey key,
Collection<CacheKey> otherKeys)
返回多个集合的并集,多个集合由 keys 指定
不存在的 key 被视为空集。
|
<V> Set<V> |
sUnion(Collection<CacheKey> otherKeys)
返回多个集合的并集,多个集合由 keys 指定
不存在的 key 被视为空集。
|
Long |
sUnionStore(CacheKey key,
CacheKey otherKey,
CacheKey distKey)
这个命令类似于 SUNION key [key …] 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。
|
Long |
sUnionStore(Collection<CacheKey> otherKeys,
CacheKey distKey)
这个命令类似于 SUNION key [key …] 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。
|
Long |
ttl(String key)
以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。
|
String |
type(String key)
返回 key 所储存的值的类型。
|
Long |
unlink(CacheKey... keys)
异步删除给定的一个 key 或 多个key
不存在的 key 会被忽略。
|
Long |
unlink(String... keys)
异步删除给定的一个 key 或 多个key
不存在的 key 会被忽略。
|
Long |
unlinkCacheKeys(Collection<CacheKey> keys)
异步删除给定的一个 key 或 多个key
不存在的 key 会被忽略。
|
Long |
unlinkStrs(List<String> keys)
异步删除给定的一个 key 或 多个key
不存在的 key 会被忽略。
|
Long |
zAdd(String key,
Map<Object,Double> scoreMembers)
将一个或多个 member 元素及其 score 值加入到有序集 key 当中。
|
Boolean |
zAdd(String key,
Object member,
double score)
将一个或多个 member 元素及其 score 值加入到有序集 key 当中。
|
Long |
zCard(String key)
返回有序集 key 的基数。
|
Long |
zCount(String key,
double min,
double max)
返回有序集 key 中, score 值在 min 和 max 之间(默认包括 score 值等于 min 或 max )的成员的数量。
|
Double |
zIncrBy(String key,
Object member,
double score)
为有序集 key 的成员 member 的 score 值加上增量 increment 。
|
Set<Object> |
zRange(String key,
long start,
long end)
返回有序集 key 中,指定区间内的成员。
|
Set<Object> |
zRangeByScore(String key,
double min,
double max)
返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。
|
Set<org.springframework.data.redis.core.ZSetOperations.TypedTuple<Object>> |
zRangeByScoreWithScores(String key,
double min,
double max)
返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。
|
Set<org.springframework.data.redis.core.ZSetOperations.TypedTuple<Object>> |
zRangeWithScores(String key,
long start,
long end)
返回有序集 key 中,指定区间内的成员。
|
Long |
zRank(String key,
Object member)
返回有序集 key 中成员 member 的排名。
|
Long |
zRem(String key,
long start,
long end)
移除有序集 key 中,指定排名(rank)区间内的所有成员。
|
Long |
zRem(String key,
Object... members)
移除有序集 key 中的一个或多个成员,不存在的成员将被忽略。
|
Long |
zRemRangeByScore(String key,
double min,
double max)
移除有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。
|
Set<Object> |
zReverseRange(String key,
double min,
double max)
返回有序集 key 中, score 值介于 max 和 min 之间(默认包括等于 max 或 min )的所有的成员。
|
Set<org.springframework.data.redis.core.ZSetOperations.TypedTuple<Object>> |
zReverseRangeByScoreWithScores(String key,
double min,
double max)
返回有序集 key 中, score 值介于 max 和 min 之间(默认包括等于 max 或 min )的所有的成员。
|
Set<Object> |
zRevrange(String key,
long start,
long end)
返回有序集 key 中,指定区间内的成员。
|
Set<org.springframework.data.redis.core.ZSetOperations.TypedTuple<Object>> |
zRevrangeWithScores(String key,
long start,
long end)
返回有序集 key 中,指定区间内的成员。
|
Long |
zRevrank(String key,
Object member)
返回有序集 key 中成员 member 的排名。
|
Double |
zScore(String key,
Object member)
返回有序集 key 中,成员 member 的 score 值。
|
public Long del(@NonNull CacheKey... keys)
keys - 一定不能为 null.public Long del(@NonNull String... keys)
keys - 一定不能为 null.public Long del(@NonNull List<String> keys)
keys - 一定不能为 null.public Long del(@NonNull Collection<CacheKey> keys)
keys - 一定不能为 null.public Long unlink(@NonNull CacheKey... keys)
keys - 一定不能为 null.public Long unlink(@NonNull String... keys)
keys - 一定不能为 null.public Long unlinkCacheKeys(@NonNull Collection<CacheKey> keys)
keys - 一定不能为 null.public Long unlinkStrs(@NonNull List<String> keys)
keys - 一定不能为 null.public void scanUnlink(@NonNull
String pattern)
pattern - patternpublic List<String> scan(@NonNull String pattern)
例子: KEYS * 匹配数据库中所有 key 。 KEYS h?llo 匹配 hello , hallo 和 hxllo 等。 KEYS h*llo 匹配 hllo 和 heeeeello 等。 KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo 。
特殊符号用 \ 隔开
pattern - 表达式public Set<String> keys(@NonNull String pattern)
例子: KEYS * 匹配数据库中所有 key 。 KEYS h?llo 匹配 hello , hallo 和 hxllo 等。 KEYS h*llo 匹配 hllo 和 heeeeello 等。 KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo 。
特殊符号用 \ 隔开
pattern - 表达式public Boolean exists(@NonNull String key)
key - 一定不能为 null.public String randomKey()
public void rename(@NonNull
String oldKey,
@NonNull
String newKey)
oldKey - 一定不能为 null.newKey - 一定不能为 null.public Boolean renameNx(@NonNull String oldKey, String newKey)
oldKey - 一定不能为 null.newKey - 一定不能为 null.public Boolean move(@NonNull String key, int dbIndex)
key - 一定不能为 null.dbIndex - 数据库索引public Boolean expire(@NonNull String key, long seconds)
生存时间可以通过使用 DEL 命令来删除整个 key 来移除,或者被 SET 和 GETSET 命令覆写(overwrite),这意味着,如果一个命令只是修改(alter)一个带生存时间的 key 的值而不是用一个新的 key 值来代替(replace)它的话,那么生存时间不会被改变。
比如说,对一个 key 执行 INCR 命令,对一个列表进行 LPUSH 命令,或者对一个哈希表执行 HSET 命令,这类操作都不会修改 key 本身的生存时间。
另一方面,如果使用 RENAME 对一个 key 进行改名,那么改名后的 key 的生存时间和改名前一样。
RENAME 命令的另一种可能是,尝试将一个带生存时间的 key 改名成另一个带生存时间的 another_key ,这时旧的 another_key (以及它的生存时间)会被删除,然后旧的 key 会改名为 another_key ,因此,新的 another_key 的生存时间也和原本的 key 一样。
使用 PERSIST 命令可以在不删除 key 的情况下,移除 key 的生存时间,让 key 重新成为一个『持久的』(persistent) key 。
key - 一定不能为 null.seconds - 过期时间 单位:秒public Boolean expire(@NonNull String key, @NonNull Duration timeout)
生存时间可以通过使用 DEL 命令来删除整个 key 来移除,或者被 SET 和 GETSET 命令覆写(overwrite),这意味着,如果一个命令只是修改(alter)一个带生存时间的 key 的值而不是用一个新的 key 值来代替(replace)它的话,那么生存时间不会被改变。
比如说,对一个 key 执行 INCR 命令,对一个列表进行 LPUSH 命令,或者对一个哈希表执行 HSET 命令,这类操作都不会修改 key 本身的生存时间。
另一方面,如果使用 RENAME 对一个 key 进行改名,那么改名后的 key 的生存时间和改名前一样。
RENAME 命令的另一种可能是,尝试将一个带生存时间的 key 改名成另一个带生存时间的 another_key ,这时旧的 another_key (以及它的生存时间)会被删除,然后旧的 key 会改名为 another_key ,因此,新的 another_key 的生存时间也和原本的 key 一样。
使用 PERSIST 命令可以在不删除 key 的情况下,移除 key 的生存时间,让 key 重新成为一个『持久的』(persistent) key 。
key - 一定不能为 null.timeout - 过期时间public Boolean expireAt(@NonNull String key, @NonNull Date date)
key - 一定不能为 null.date - 过期时间public Boolean expireAt(@NonNull String key, long unixTimestamp)
key - 一定不能为 null.unixTimestamp - 过期时间戳public Boolean pExpire(@NonNull String key, long milliseconds)
key - 一定不能为 null.milliseconds - 过期时间 单位: 毫米public Boolean persist(@NonNull String key)
key - 一定不能为 null.public String type(@NonNull String key)
key - 一定不能为 null.public Long ttl(@NonNull String key)
key - 一定不能为 null.public Long pTtl(@NonNull String key)
key - 一定不能为 null.public void set(@NonNull
String key,
Object value,
boolean... cacheNullValues)
如果 key 已经持有其他值, SET 就覆写旧值, 无视类型。 当 SET 命令对一个带有生存时间(TTL)的键进行设置之后, 该键原有的 TTL 将被清除.
key - 一定不能为 null.value - 值cacheNullValues - 是否缓存null对象public void set(@NonNull
CacheKey cacheKey,
Object value,
boolean... cacheNullValues)
cacheKey - 缓存key 一定不能为 null.value - 缓存valuecacheNullValues - 是否缓存null对象public void setEx(@NonNull
String key,
Object value,
Duration timeout,
boolean... cacheNullValues)
SETEX 命令的效果和以下两个命令的效果类似: SET key value EXPIRE key seconds # 设置生存时间
SETEX 和这两个命令的不同之处在于 SETEX 是一个原子(atomic)操作, 它可以在同一时间内完成设置值和设置过期时间这两个操作, 因此 SETEX 命令在储存缓存的时候非常实用。
key - 一定不能为 null.value - 值timeout - 一定不能为 null.cacheNullValues - 是否缓存null对象IllegalArgumentException - if either key, value or timeout is not present.public void setEx(@NonNull
String key,
Object value,
long seconds,
boolean... cacheNullValues)
SETEX 命令的效果和以下两个命令的效果类似: SET key value EXPIRE key seconds # 设置生存时间
SETEX 和这两个命令的不同之处在于 SETEX 是一个原子(atomic)操作, 它可以在同一时间内完成设置值和设置过期时间这两个操作, 因此 SETEX 命令在储存缓存的时候非常实用。
key - 一定不能为 null.value - 值cacheNullValues - 是否缓存null对象seconds - 过期时间 单位秒@Nullable public Boolean setXx(@NonNull String key, String value, boolean... cacheNullValues)
key - 一定不能为 null.value - 一定不能为 null.IllegalArgumentException - 如果key 或 value 不存在@Nullable public Boolean setXx(@NonNull String key, String value, long seconds, boolean... cacheNullValues)
key - 一定不能为 null.value - 一定不能为 null.seconds - 过期时间 单位秒IllegalArgumentException - 如果key 或 value 不存在@Nullable public Boolean setXx(@NonNull String key, String value, Duration timeout, boolean... cacheNullValues)
key - 一定不能为 null.value - 一定不能为 null.timeout - 一定不能为 null.IllegalArgumentException - 如果key 或 value 不存在@Nullable public Boolean setNx(@NonNull String key, String value, boolean... cacheNullValues)
若键 key 已经存在, 则 SETNX 命令不做任何动作。
SETNX 是『SET if Not eXists』(如果不存在,则 SET)的简写。
key - 一定不能为 null.value - 一定不能为 null.@Nullable
public <T> T get(@NonNull
String key,
boolean... cacheNullValues)
如果键 key 不存在, 那么返回特殊值 null ; 否则, 返回键 key 的值。
key - 一定不能为 null.cacheNullValues - 是否缓存空值@Nullable
public <T> T get(@NonNull
String key,
Function<String,T> loader,
boolean... cacheNullValues)
如果值不存在, 那么调用 loader 方法获取数据后,set 到缓存
key - 一定不能为 null.loader - 缓存加载器cacheNullValues - 是否缓存空值public <T> T getSet(@NonNull
String key,
Object value)
返回给定键 key 的旧值。 如果键 key 没有旧值, 也即是说, 键 key 在被设置之前并不存在, 那么命令返回 nil 。 当键 key 存在但不是字符串类型时, 命令返回一个错误。
key - 一定不能为 null.value - 值@Nullable
public <T> T get(@NonNull
CacheKey key,
boolean... cacheNullValues)
如果键 key 不存在, 那么返回特殊值 null ; 否则, 返回键 key 的值。
key - 一定不能为 null.cacheNullValues - 是否缓存空值@Nullable
public <T> T get(@NonNull
CacheKey key,
Function<CacheKey,T> loader,
boolean... cacheNullValues)
如果键 key 不存在, 那么返回特殊值 null ; 否则, 返回键 key 的值。
key - 一定不能为 null.loader - 加载器cacheNullValues - 是否缓存空值@Nullable public Long strLen(@NonNull String key)
key - 一定不能为 null.@Nullable public Integer append(@NonNull String key, String value)
key - 一定不能为 null.public void setRange(@NonNull
String key,
String value,
long offset)
不存在的键 key 当作空白字符串处理。
SETRANGE 命令会确保字符串足够长以便将 value 设置到指定的偏移量上, 如果键 key 原来储存的字符串长度比偏移量小(比如字符串只有 5 个字符长,但你设置的 offset 是 10 ), 那么原字符和偏移量之间的空白将用零字节(zerobytes, "\x00" )进行填充。
因为 Redis 字符串的大小被限制在 512 兆(megabytes)以内, 所以用户能够使用的最大偏移量为 2^29-1(536870911) , 如果你需要使用比这更大的空间, 请使用多个 key 。
key - 一定不能为 null.value - 字符串offset - 最大不能超过 536870911public String getRange(@NonNull String key, long start, long end)
key - 一定不能为 null.start - 开始偏移量end - 结束偏移量public void mSet(@NonNull
Map<String,Object> map,
boolean cacheNullVal)
map - 一定不能为 null.cacheNullVal - 是否缓存空值public void mSet(@NonNull
Map<String,Object> map)
map - 一定不能为 null.public void mSetNx(@NonNull
Map<String,Object> map,
boolean cacheNullVal)
map - 一定不能为 null.cacheNullVal - 是否缓存空值public void mSetNx(@NonNull
Map<String,Object> map)
map - 一定不能为 null.public <T> List<T> mGet(@NonNull String... keys)
keys - 一定不能为 null.public <T> List<T> mGet(@NonNull CacheKey... keys)
keys - 一定不能为 null.public <T> List<T> mGet(@NonNull Collection<String> keys)
keys - 一定不能为 null.public <T> List<T> mGetByCacheKey(@NonNull Collection<CacheKey> cacheKeys)
cacheKeys - 一定不能为 null.public Long incr(@NonNull CacheKey key)
提示: INCR 命令是一个针对字符串的操作。 因为 Redis 并没有专用的整数类型, 所以键 key 储存的值在执行 INCR 命令时会被解释为十进制 64 位有符号整数。
key - 一定不能为 null.public Long incrBy(@NonNull CacheKey key, long increment)
key - 一定不能为 null.increment - 增量值public Double incrByFloat(@NonNull CacheKey key, double increment)
无论是键 key 的值还是增量 increment , 都可以使用像 2.0e7 、 3e5 、 90e-2 那样的指数符号(exponential notation)来表示, 但是, 执行 INCRBYFLOAT 命令之后的值总是以同样的形式储存, 也即是, 它们总是由一个数字, 一个(可选的)小数点和一个任意长度的小数部分组成(比如 3.14 、 69.768 ,诸如此类), 小数部分尾随的 0 会被移除, 如果可能的话, 命令还会将浮点数转换为整数(比如 3.0 会被保存成 3 )。 此外, 无论加法计算所得的浮点数的实际精度有多长, INCRBYFLOAT 命令的计算结果最多只保留小数点的后十七位。
当以下任意一个条件发生时, 命令返回一个错误: 键 key 的值不是字符串类型(因为 Redis 中的数字和浮点数都以字符串的形式保存,所以它们都属于字符串类型); 键 key 当前的值或者给定的增量 increment 不能被解释(parse)为双精度浮点数。
key - 一定不能为 null.increment - 增量值public Long getCounter(@NonNull CacheKey key, Long... defaultValue)
key - 一定不能为 null.public Long getCounter(@NonNull CacheKey key, Function<CacheKey,Long> loader)
key - 一定不能为 null.public Long decr(@NonNull CacheKey key)
key - 一定不能为 null.public Long decrBy(@NonNull CacheKey key, long decrement)
key - 一定不能为 null.public void hSet(@NonNull
String key,
@NonNull
Object field,
Object value,
boolean... cacheNullValues)
key - 一定不能为 null.field - 一定不能为 null.cacheNullValues - 是否缓存空对象value - 值public void hSet(@NonNull
CacheHashKey key,
Object value,
boolean... cacheNullValues)
key - 一定不能为 null.value - 值cacheNullValues - 是否缓存空对象@Nullable
public <T> T hGet(@NonNull
String key,
@NonNull
Object field,
boolean... cacheNullValues)
key - 一定不能为 null.field - 一定不能为 null.cacheNullValues - 是否缓存空值@Nullable
public <T> T hGet(@NonNull
String key,
@NonNull
Object field,
BiFunction<String,Object,T> loader,
boolean... cacheNullValues)
key - 一定不能为 null.field - 一定不能为 null.loader - 加载器cacheNullValues - 是否缓存空值@Nullable
public <T> T hGet(@NonNull
CacheHashKey key,
boolean... cacheNullValues)
key - 一定不能为 null.cacheNullValues - 是否缓存空值@Nullable
public <T> T hGet(@NonNull
CacheHashKey key,
Function<CacheHashKey,T> loader,
boolean... cacheNullValues)
key - 一定不能为 null.cacheNullValues - 是否缓存空值loader - 加载器public Boolean hExists(@NonNull String key, @NonNull Object field)
key - 一定不能为 null.field - 一定不能为 null.public Boolean hExists(@NonNull CacheHashKey cacheHashKey)
cacheHashKey - 一定不能为 null.public Long hDel(@NonNull String key, Object... fields)
key - 一定不能为 null.fields - 一定不能为 null.public Long hDel(@NonNull CacheHashKey key)
public Long hLen(@NonNull String key)
key - 一定不能为 null.public Long hStrLen(@NonNull String key, @NonNull Object field)
key - 一定不能为 null.field - 一定不能为 null.public Long hIncrBy(@NonNull CacheHashKey key, long increment)
key - 一定不能为 null.increment - 增量public Double hIncrByFloat(@NonNull CacheHashKey key, double increment)
key - 一定不能为 null.increment - 增量public <K,V> void hmSet(@NonNull
String key,
@NonNull
Map<K,V> hash,
boolean... cacheNullValues)
key - 一定不能为 null.hash - 一定不能为 null.cacheNullValues - 是否缓存空值public List<Object> hmGet(@NonNull String key, @NonNull Object... fields)
key - 一定不能为 null.fields - 一定不能为 null.public List<Object> hmGet(@NonNull String key, @NonNull Collection<Object> fields)
key - 一定不能为 null.fields - 一定不能为 null.public <HK> Set<HK> hKeys(@NonNull String key)
key - 一定不能为 null.public <HV> List<HV> hVals(@NonNull String key)
key - 一定不能为 null.public <K,V> Map<K,V> hGetAll(@NonNull String key)
key - 一定不能为 null.public <K,V> Map<K,V> hGetAll(@NonNull CacheHashKey key)
@Nullable public <K,V> Map<K,V> hGetAll(@NonNull CacheHashKey key, Function<CacheHashKey,Map<K,V>> loader, boolean... cacheNullValues)
key - 一定不能为 null.cacheNullValues - 是否缓存空值loader - 加载器@Nullable public Long lPush(@NonNull String key, Object... values)
key - 一定不能为 null.values - 值@Nullable public Long lPush(@NonNull String key, Collection<Object> values)
key - 一定不能为 null.values - 值@Nullable public Long lPushX(@NonNull String key, Object values)
key - 一定不能为 null.values - 值@Nullable public Long rPush(@NonNull String key, Object... values)
key - 一定不能为 null.values - 值@Nullable public Long rPush(@NonNull String key, Collection<Object> values)
key - 一定不能为 null.values - 值@Nullable public Long rPushX(@NonNull String key, Object value)
和 RPUSH key value [value …] 命令相反,当 key 不存在时, RPUSHX 命令什么也不做。
key - 一定不能为 null.value - 值@Nullable
public <T> T lPop(@NonNull
String key)
key - 一定不能为 null.public <T> T rPop(@NonNull
String key)
key - 一定不能为 null.public <T> T rPoplPush(String sourceKey, String destinationKey)
举个例子,你有两个列表 source 和 destination , source 列表有元素 a, b, c , destination 列表有元素 x, y, z , 执行 RPOPLPUSH source destination 之后, source 列表包含元素 a, b , destination 列表包含元素 c, x, y, z ,并且元素 c 会被返回给客户端。
如果 source 不存在,值 nil 被返回,并且不执行其他动作。 如果 source 和 destination 相同,则列表中的表尾元素被移动到表头,并返回该元素,可以把这种特殊情况视作列表的旋转(rotation)操作。
sourceKey - 一定不能为 null.destinationKey - 一定不能为 null.@Nullable public Long lRem(@NonNull String key, long count, Object value)
count 的值可以是以下几种: count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。 count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。 count = 0 : 移除表中所有与 value 相等的值。
key - 一定不能为 null.count - 数量value - 值@Nullable public Long lLen(@NonNull String key)
key - 一定不能为 null.@Nullable
public <T> T lIndex(@NonNull
String key,
long index)
key - 一定不能为 null.index - 索引@Nullable public Long lInsert(@NonNull String key, Object pivot, Object value)
key - 一定不能为 null.pivot - 对比值value - 值@Nullable public Long rInsert(@NonNull String key, Object pivot, Object value)
key - 一定不能为 null.pivot - 对比值value - 值public void lSet(@NonNull
String key,
long index,
Object value)
key - 一定不能为 null.index - 下标value - 值@Nullable public List<Object> lRange(@NonNull String key, long start, long end)
例子: 获取 list 中所有数据:lRange(key, 0, -1); 获取 list 中下标 1 到 3 的数据: lRange(key, 1, 3);
如果 start 下标比列表的最大下标 end ( LLEN list 减去 1 )还要大,那么 LRANGE 返回一个空列表。 如果 stop 下标比 end 下标还要大,Redis将 stop 的值设置为 end 。
key - 一定不能为 null.start - 开始索引end - 结束索引public void lTrim(@NonNull
String key,
long start,
long end)
key - 一定不能为 null.start - 开始索引end - 结束索引public <V> Long sAdd(@NonNull CacheKey key, V... members)
key - 一定不能为 null.members - 元素public <V> Long sAdd(@NonNull CacheKey key, Collection<V> members)
key - 一定不能为 null.members - 元素public Boolean sIsMember(@NonNull CacheKey key, Object member)
key - 一定不能为 null.member - 元素@Nullable
public <T> T sPop(@NonNull
CacheKey key)
key - 一定不能为 null.@Nullable
public <T> T sRandMember(@NonNull
CacheKey key)
key - 一定不能为 null.@Nullable public <V> Set<V> sRandMember(@NonNull CacheKey key, long count)
如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合。 如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值。
key - 一定不能为 null.count - 数量@Nullable public <V> List<V> sRandMembers(@NonNull CacheKey key, long count)
如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合。 如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值。
key - 一定不能为 null.count - 数量@Nullable public Long sRem(@NonNull CacheKey key, Object... members)
key - 一定不能为 null.members - 元素public <V> Boolean sMove(@NonNull CacheKey sourceKey, CacheKey destinationKey, V value)
sourceKey - 源keydestinationKey - 目的keyvalue - 值public Long sCard(@NonNull CacheKey key)
key - 一定不能为 null.@Nullable public <V> Set<V> sMembers(@NonNull CacheKey key)
key - 一定不能为 null.@Nullable public <V> Set<V> sInter(@NonNull CacheKey key, @NonNull CacheKey otherKey)
不存在的 key 被视为空集。
当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。
key - 一定不能为null.otherKey - 一定不能为 null.@Nullable public Set<Object> sInter(@NonNull CacheKey key, Collection<CacheKey> otherKeys)
不存在的 key 被视为空集。
当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。
key - 一定不能为null.otherKeys - 一定不能为 null.@Nullable public <V> Set<V> sInter(Collection<CacheKey> otherKeys)
不存在的 key 被视为空集。
当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。
otherKeys - 一定不能为 null.@Nullable public Long sInterStore(@NonNull CacheKey key, @NonNull CacheKey otherKey, @NonNull CacheKey destKey)
key - 一定不能为null.otherKey - 一定不能为 null.destKey - 一定不能为null.@Nullable public Long sInterStore(@NonNull CacheKey key, @NonNull Collection<CacheKey> otherKeys, @NonNull CacheKey destKey)
key - 一定不能为null.otherKeys - 一定不能为 null.destKey - 一定不能为null.@Nullable public Long sInterStore(Collection<CacheKey> otherKeys, @NonNull CacheKey destKey)
otherKeys - 一定不能为 null.destKey - 一定不能为null.@Nullable public <V> Set<V> sUnion(@NonNull CacheKey key, @NonNull CacheKey otherKey)
key - 一定不能为 null.otherKey - 一定不能为 null.@Nullable public <V> Set<V> sUnion(@NonNull CacheKey key, Collection<CacheKey> otherKeys)
key - 一定不能为 null.otherKeys - 一定不能为 null.@Nullable public <V> Set<V> sUnion(Collection<CacheKey> otherKeys)
otherKeys - 一定不能为 null.public Long sUnionStore(@NonNull CacheKey key, @NonNull CacheKey otherKey, @NonNull CacheKey distKey)
key - 一定不能为 null.otherKey - 一定不能为 null.distKey - 一定不能为 null.public Long sUnionStore(Collection<CacheKey> otherKeys, @NonNull CacheKey distKey)
otherKeys - 一定不能为 null.distKey - 一定不能为 null.@Nullable public <V> Set<V> sDiff(@NonNull CacheKey key, @NonNull CacheKey otherKey)
key - 一定不能为 null.otherKey - 一定不能为 null.public <V> Set<V> sDiff(Collection<CacheKey> otherKeys)
otherKeys - 一定不能为 null.public Long sDiffStore(@NonNull CacheKey key, @NonNull CacheKey otherKey, @NonNull CacheKey distKey)
key - 一定不能为 null.distKey - 一定不能为 null.otherKey - 一定不能为 null.public Long sDiffStore(Collection<CacheKey> otherKeys, @NonNull CacheKey distKey)
otherKeys - 一定不能为 null.public Boolean zAdd(@NonNull String key, Object member, double score)
key - 一定不能为 null.score - 得分member - 值public Long zAdd(@NonNull String key, Map<Object,Double> scoreMembers)
key - 一定不能为 null.scoreMembers - 一定不能为 null.public Double zScore(@NonNull String key, Object member)
key - 一定不能为 null.member - the value.public Double zIncrBy(@NonNull String key, Object member, double score)
key - 一定不能为 null.score - 得分member - the value.public Long zCard(@NonNull String key)
key - 一定不能为 null.public Long zCount(@NonNull String key, double min, double max)
key - 一定不能为 null.min - 最小值max - 最大值@Nullable public Set<Object> zRange(@NonNull String key, long start, long end)
下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。 你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
超出范围的下标并不会引起错误。 比如说,当 start 的值比有序集的最大下标还要大,或是 start > stop 时, ZRANGE 命令只是简单地返回一个空列表。 另一方面,假如 stop 参数的值比有序集的最大下标还要大,那么 Redis 将 stop 当作最大下标来处理。
可以通过使用 WITHSCORES 选项,来让成员和它的 score 值一并返回,返回列表以 value1,score1, ..., valueN,scoreN 的格式表示。 客户端库可能会返回一些更复杂的数据类型,比如数组、元组等
key - 一定不能为 null.start - 索引end - 索引@Nullable public Set<org.springframework.data.redis.core.ZSetOperations.TypedTuple<Object>> zRangeWithScores(@NonNull String key, long start, long end)
下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。 你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
超出范围的下标并不会引起错误。 比如说,当 start 的值比有序集的最大下标还要大,或是 start > stop 时, ZRANGE 命令只是简单地返回一个空列表。 另一方面,假如 stop 参数的值比有序集的最大下标还要大,那么 Redis 将 stop 当作最大下标来处理。
可以通过使用 WITHSCORES 选项,来让成员和它的 score 值一并返回,返回列表以 value1,score1, ..., valueN,scoreN 的格式表示。 客户端库可能会返回一些更复杂的数据类型,比如数组、元组等
key - 一定不能为 null.start - 索引end - 索引@Nullable public Set<Object> zRevrange(@NonNull String key, long start, long end)
key - 一定不能为 null.start - 索引end - 索引@Nullable public Set<org.springframework.data.redis.core.ZSetOperations.TypedTuple<Object>> zRevrangeWithScores(@NonNull String key, long start, long end)
key - 一定不能为 null.start - 索引end - 索引public Set<Object> zRangeByScore(@NonNull String key, double min, double max)
key - 一定不能为 null.min - 最小得分max - 最大得分public Set<org.springframework.data.redis.core.ZSetOperations.TypedTuple<Object>> zRangeByScoreWithScores(@NonNull String key, double min, double max)
key - 一定不能为 null.min - 最小得分max - 最大得分public Set<Object> zReverseRange(@NonNull String key, double min, double max)
key - 一定不能为 null.min - 最小得分max - 最大得分public Set<org.springframework.data.redis.core.ZSetOperations.TypedTuple<Object>> zReverseRangeByScoreWithScores(@NonNull String key, double min, double max)
key - 一定不能为 null.min - 最小得分max - 最大得分@Nullable public Long zRank(@NonNull String key, Object member)
key - 一定不能为 null.member - the value.public Long zRevrank(@NonNull String key, Object member)
key - 一定不能为 null.member - the value.public Long zRem(@NonNull String key, Object... members)
key - 一定不能为 null.members - 一定不能为 null.public Long zRem(@NonNull String key, long start, long end)
key - 一定不能为 null.start - 下标end - 下标public Long zRemRangeByScore(@NonNull String key, double min, double max)
key - 一定不能为 null.min - 最小得分max - 最大得分Copyright © 2022. All rights reserved.