public static class RedisHelper.StringOps extends Object
| 构造器和说明 |
|---|
StringOps() |
| 限定符和类型 | 方法和说明 |
|---|---|
static int |
append(String key,
String value)
追加值到末尾
注: 当 redis 中原本不存在 key 时,那么(从效果上来看)此方法就等价于
this#set(String, String) |
static String |
get(String key)
根据 key,获取到对应的 value 值
|
static String |
getAndSet(String key,
String newValue)
给指定 key 设置新的 value,并返回旧的 value
注: 若 redis 中不存在 key,那么此操作仍然可以成功,不过返回的旧值是 null
|
static boolean |
getBit(String key,
long offset)
获取(key对应的)value 在二进制下,offset 位置的 bit 值。
|
static String |
getRange(String key,
long start,
long end)
对(key 对应的)value 进行截取, 截取范围为 [start, end]
注:若 [start, end] 的范围不在 value 的范围中,那么返回的是空字符串 ""
注:若 value 只有一部分在 [start, end] 的范围中,那么返回的是 value 对应部分的内容(即:不足的地方,并不会以空来填充)
|
static long |
incrBy(String key,
long increment)
增/减 整数
注:负数则为减。
|
static double |
incrByFloat(String key,
double increment)
增/减 浮点数
注:慎用浮点数,会有精度问题。
|
static List<String> |
multiGet(Collection<String> keys)
批量获取 value 值
注:若 redis 中,对应的 key 不存在,那么该 key 对应的返回的 value 值为 null
|
static void |
multiSet(Map<String,String> maps)
批量设置 key-value
注:若存在相同的 key, 则原来的 key-value会 被丢弃。
|
static boolean |
multiSetIfAbsent(Map<String,String> maps)
当 redis 中,不存在任何一个 keys 时,才批量设置 key-value,并返回成功/失败。
|
static void |
set(String key,
String value)
设置 key-value
注:若已存在相同的 key, 那么原来的 key-value 会被丢弃。
|
static boolean |
setBit(String key,
long offset,
boolean value)
处理 redis 中 key 对应的 value 值, 将第 offset 位的值, 设置为 1 或 0。
|
static void |
setEx(String key,
String value,
long timeToLive,
TimeUnit unit)
设置 key-value
注:若已存在相同的 key,那么原来的 key-value 会被丢弃
注:原子操作
|
static boolean |
setIfAbsent(String key,
String value)
若不存在 key 时,向 redis 中添加 key-value, 返回成功/失败。
|
static boolean |
setIfAbsent(String key,
String value,
long timeToLive,
TimeUnit unit)
若不存在 key 时, 向 redis 中添加一个(具有超时时长的)key-value, 返回成功/失败。
|
static void |
setRange(String key,
String replaceValue,
long offset)
从(redis 中 key 对应的)value 的 offset 位置起(包含该位置),用 replaceValue 替换对应长度的值。
|
static long |
size(String key)
获取到 key 对应的 value 的长度。
|
public static void set(String key, String value)
注:若已存在相同的 key, 那么原来的 key-value 会被丢弃。
key - keyvalue - key 对应的 valuepublic static boolean setBit(String key, long offset, boolean value)
说明:在 redis 中,存储的字符串都是以二级制的进行存在的;如存储的 key-value 里,值为 abc,实际上, 在 redis 里面存储的是 011000010110001001100011,前 8 位对应 a,中间 8 位对应 b,后面 8 位对应 c。 示例:这里如果 setBit(key, 6, true) 的话,就是将索引位置 6 的那个数,设置值为 1,值就变成 了 011000110110001001100011 追注:offset 即 index,从 0 开始。
注:参数 value 为 true,则设置为 1;参数 value 为 false,则设置为 0。
注:若 redis 中不存在对应的 key,那么会自动创建新的。 注:offset 可以超过 value 在二进制下的索引长度。
key - 定位 value 的 keyoffset - 要改变的 bit 的索引value - 改为 1 或 0,true - 改为 1,false - 改为 0public static void setEx(String key, String value, long timeToLive, TimeUnit unit)
注:若已存在相同的 key,那么原来的 key-value 会被丢弃
注:原子操作
key - keyvalue - key 对应的 valuetimeToLive - 过时时长unit - timeToLive 的单位public static boolean setIfAbsent(String key, String value)
key - keyvalue - key 对应的 valuepublic static boolean setIfAbsent(String key, String value, long timeToLive, TimeUnit unit)
key - keyvalue - key 对应的 valuetimeToLive - 超时时长unit - timeToLive 的单位public static void setRange(String key, String replaceValue, long offset)
举例说明: 1. 假设 redis 中存在 key-value("ds", "0123456789"); 调 用 setRange("ds", "abcdefghijk", 3)后,redis 中该 value 值就变为了 [012abcdefghijk]
2. 假设 redis 中存在 key-value("jd", "0123456789"); 调 用 setRange("jd", "xyz", 3)后,redis 中该 value 值就变为了 [012xyz6789]
3. 假设 redis 中存在 key-value("ey", "0123456789"); 调 用 setRange("ey", "qwer", 15)后,redis 中该 value 值就变为了 [0123456789 qwer] 注:case3 比较特殊,offset 超过了原 value 的长度了。中间就会有一些空格来填充,但是如果在程序 中直接输出的话,中间那部分空格可能会出现乱码。
key - 定位 key-value 的 keyreplaceValue - 要替换的值offset - 起始位置public static long size(String key)
注:长度等于 String.length()。
注:若 redis 中不存在对应的 key-value,则返回值为 0.
key - 定位 value 的 keypublic static void multiSet(Map<String,String> maps)
注:若存在相同的 key, 则原来的 key-value会 被丢弃。
maps - key-value 集public static boolean multiSetIfAbsent(Map<String,String> maps)
即:假设调用此方法时传入的参数 map 是这样的:{k1=v1, k2=v2, k3=v3} 那么 redis 中,k1、k2、k3 都不存在时,才会批量设置 key-value; 否则不会设置任何 key-value。
注:若存在相同的 key,则原来的 key-value 会被丢弃。
maps - key-value 集public static long incrBy(String key, long increment)
注:负数则为减。
注:若 key 对应的 value 值不支持增/减操作(即:value不是数字),那么会 抛出 org.springframework.data.redis.RedisSystemException
key - 用于定位 value 的 keyincrement - 增加多少org.springframework.data.redis.RedisSystemException - key 对应的 value 值不支持增/减操作时public static double incrByFloat(String key, double increment)
注:慎用浮点数,会有精度问题。
如: 先 RedisHelper.StringOps.set("ds", "123"); 然后再 RedisUtil.StringOps.incrByFloat("ds", 100.6); 就会看到精度问题。
注:负数则为减。
注:若 key 对应的 value 值不支持增/减操作(即:value不是数字),那么会 抛出 org.springframework.data.redis.RedisSystemException
key - 用于定位value的keyincrement - 增加多少org.springframework.data.redis.RedisSystemException - key对应的value值不支持增/减操作时public static int append(String key, String value)
注: 当 redis 中原本不存在 key 时,那么(从效果上来看)此方法就等价于 this#set(String, String)
key - 定位 value 的 keyvalue - 要追加的 value 值public static String get(String key)
key - key-value 对应的 keypublic static String getRange(String key, long start, long end)
注:若 [start, end] 的范围不在 value 的范围中,那么返回的是空字符串 ""
注:若 value 只有一部分在 [start, end] 的范围中,那么返回的是 value 对应部分的内容(即:不足的地方,并不会以空来填充)
key - 定位 value 的 keystart - 起始位置(从0开始)end - 结尾位置(从0开始)public static String getAndSet(String key, String newValue)
注: 若 redis 中不存在 key,那么此操作仍然可以成功,不过返回的旧值是 null
key - 定位 value 的 keynewValue - 要为该 key 设置的新的 value 值public static boolean getBit(String key, long offset)
注:当 offset 的值在(二进制下的 value 的)索引范围外时,返回的也是 false。
示例: RedisHelper.StringOps.set("akey", "a"); 字符串 a,转换为二进制为 01100001 那么 getBit("akey", 6) 获取到的结果为 false。
key - 定位 value 的 keyoffset - 定位 bit 的索引public static List<String> multiGet(Collection<String> keys)
注:若 redis 中,对应的 key 不存在,那么该 key 对应的返回的 value 值为 null
keys - key 集Copyright © 2023 Irvingsoft. All rights reserved.