介绍
boundValueOps主要用于操作Redis的字符串的,它可以先在boundValueOps(“key”)中写上key名,然后接方法名,这样以后的操作就不需要写key的名称,比如redisTemplate.boundValueOps(“key”).set(“value”);当我们需要对一个key同时做多个操作时,我们做如下操作:
//先设置为2然后自增1
BoundValueOperations operations=redisTemplate.boundValueOps("key");
operations.set("2");
operations.increment();
以下各方法皆来自于Redis的命令,命令详细介绍参考https://blog.youkuaiyun.com/ppjsyw/article/details/125081150
一、设值
1.设置键值对
作用
设置一个键值对,类似set key value
方法
void set(V value);
参数说明
value:值
示例
redisTemplate.boundValueOps("key").set("value");
2.键不存在时设置
作用
当key不存在时设置一个键值对,类似setnx key value
方法
Boolean setIfAbsent(V value);
说明
- 返回值:key不存在为true,key存在为false
- value:值
示例
redisTemplate.boundValueOps("key").setIfAbsent("value");
3.键存在时设置
作用
当key存在时设置,类似set key value XX
方法
Boolean setIfPresent(V value);
参数说明
- 返回值:key存在为true,key不存在为false
- value:值
示例
redisTemplate.boundValueOps("key").setIfPresent("value");
4.同时设值过期时间(参数为:TimeUnit)
作用
在设置完键值对后,设置过期时间,类似于setex key seconds value
方法
void set(V value, long timeout, TimeUnit unit);
Boolean setIfAbsent(V value, long timeout, TimeUnit unit);
Boolean setIfPresent(V value, long timeout, TimeUnit unit);
说明
-
value:值
-
timeout:多少时间单位
-
unit:时间单位
- TimeUnit.NANOSECONDS:纳秒
- TimeUnit.MICROSECONDS:微秒
- TimeUnit.MILLISECONDS:毫秒
- TimeUnit.SECONDS:秒种
- TimeUnit.MINUTES:分钟
- TimeUnit.HOURS:小时
- TimeUnit.DAYS:天
示例
//过期时间为一秒钟
redisTemplate.boundValueOps("key").set("value",1,TimeUnit.SECONDS);
//过期时间为一分钟
redisTemplate.boundValueOps("key").setIfAbsent("value",1,TimeUnit.MINUTES);
//过期时间为二小时
redisTemplate.boundValueOps("key").setIfPresent("value",1,TimeUnit.HOURS);
5.同时设置过期时间(单位:Duration)
作用
在设置完键值对后,设置过期时间,类似于setex key seconds value
方法
void set(V value, Duration timeout);
default void setIfAbsent(V value, Duration timeout);
Boolean setIfPresent(V value, Duration timeout);
说明
- value:值
- timeout:时间单位,可链式调用
- Duration.ofDays(1):天
- Duration.ofHours(1):时
- Duration.ofMinutes(1):分
- Duration.ofSeconds(1):秒
- Duration.ofMillis(1):毫秒
- Duration.ofNanos(1):纳秒
示例
//过期时间是1天1小时
redisTemplate.boundValueOps("key").set("value", Duration.ofDays(1).ofHours(1));
//过期时间是2天1小时
redisTemplate.boundValueOps("key").setIfAbsent("value", Duration.ofDays(2).ofHours(1));
//过期时间是3天3秒钟
redisTemplate.boundValueOps("key").setIfPresent("value", Duration.ofDays(3).ofSeconds(3));
二.获取
1.获取key的值
作用
获取key的值,类似于get key
方法
V get();
说明
- 返回值:key的值
示例
redisTemplate.boundValueOps("key").get();
2.获取key并删除
作用
获取key的值并删除,类似于getdel key
方法
V getAndDelete();
说明
- 返回值:key的旧值
示例
redisTemplate.boundValueOps("key").getAndDelete();
3.获取旧值并设置新值
作用
获取key的旧值,并设置新值,类似于getset key value
方法
V getAndSet(V value);
说明
- 返回值:key的旧值
- value:要设置的值
示例
redisTemplate.boundValueOps("key").getAndSet();
4.获取key的值并设置过期时间(单位:TimeUnit)
作用
获取key的之后,之后设置过期时间,类似于getex key
方法
V getAndExpire(long timeout, TimeUnit unit);
说明
-
返回值:key的值
-
timeout:多少时间单位
-
unit:时间单位
- TimeUnit.NANOSECONDS:纳秒
- TimeUnit.MICROSECONDS:微秒
- TimeUnit.MILLISECONDS:毫秒
- TimeUnit.SECONDS:秒种
- TimeUnit.MINUTES:分钟
- TimeUnit.HOURS:小时
- TimeUnit.DAYS:天
示例
redisTemplate.boundValueOps("key").getAndExpire(1,TimeUnit.HOURS);
5.获取key的值并设置过期时间(单位:Duration)
作用
获取key的之后,之后设置过期时间,类似于getex key
方法
V getAndExpire(Duration timeout);
说明
- 返回值:key的值
- timeout:时间单位,可链式调用
- Duration.ofDays(1):天
- Duration.ofHours(1):时
- Duration.ofMinutes(1):分
- Duration.ofSeconds(1):秒
- Duration.ofMillis(1):毫秒
- Duration.ofNanos(1):纳秒
示例
//过期时间是3天3小时
redisTemplate.boundValueOps("key").getAndExpire(Duration.ofDays(3).ofSeconds(3));
6.获取key的值并清除过期时间
作用
先获取key的值然后删除过期时间,类似于 set key value KEEPTTL
方法
V getAndPersist();
说明
- 返回值:key的值
示例
redisTemplate.boundValueOps("key").getAndPersist();
三 .自增、自减
1. 自增1
作用
给指定的key自增1,类似incr key
方法
Long increment();
说明
- 返回值:自增后的值
示例
redisTemplate.boundValueOps("key").increment();
2. 自减1
作用
给指定的key自减1,类似decr key
方法
Long decrement();
说明
- 返回值:自减后的值
示例
redisTemplate.boundValueOps("key").decrement();
3.自增指定整数
作用
给指定的key自增指定整数值,类似incrby key increment
方法
Long increment(long delta);
说明
- 返回值:自增后的值
- delta:要增加的值
示例
redisTemplate.boundValueOps("key").increment(3);
4.自减指定整数
作用
给指定的key自减指定整数值,类似decrby key increment
方法
Long decrement(long delta);
说明
- 返回值:自减后的值
- delta:要减的值
示例
redisTemplate.boundValueOps("key").decrement(3);
5.自增指定小数
作用
给指定的key自减指定小数值,类似incrbyfloat key increment
方法
Double increment(double delta);
说明
- 返回值:自增后的值
- delta:要增加的值
示例
redisTemplate.boundValueOps("key").increment(3.3);
四.其他
1.追加字符串
作用
在指定的key后面追加字符串,类似于append key value
方法
Integer append(String value);
说明
-
返回值:追加后字符串的长度
-
value:需要追加的字符串
示例
redisTemplate.boundValueOps("key").append("value");
2.获得长度
作用
获得一个key的值的长度,类似strlen key
方法
Long size();
说明
- 返回值:字符串的长度
示例
redisTemplate.boundValueOps("key").size();
3.获得指定范围的字符串
作用
获得key的值在start-stop的内容,类似getrange key start stop
方法
String get(long start, long end);
说明
- 返回值:start-stop的内容
- start:开始索引
- end:结束索引
示例
redisTemplate.boundValueOps("key").get(0,5);
4.替换指定索引的内容
作用
将索引为offset的地方地方为指定的字符串,类似于setrange key offset value
方法
void set(V value, long offset);
说明
- value:需要替换的内容
- offset:指定索引
示例
redisTemplate.boundValueOps("key").set("value",0);