当前位置:   article > 正文

RedisTemplet opsForValue中方法使用说明_opsforvalue有什么用

opsforvalue有什么用

介绍

opsForValue主要用于操作Redis的字符串的,使用方式:redisTemplate.opsForValue().方法名,比如

redisTemplate.opsForValue().set(,"value");
  • 1

以下各方法皆来自于Redis的命令,命令详细介绍参考https://blog.csdn.net/ppjsyw/article/details/125081150

一、设值

1.设置键值对

作用

设置一个键值对,类似set key value

方法

void set(K key, V value);
  • 1

参数说明

  • key:键名
  • value:值

示例

redisTemplate.opsForValue().set("key","value");
  • 1

2.键不存在时设置

作用

当key不存在时设置一个键值对,类似setnx key value

方法
Boolean setIfAbsent(K key, V value);
  • 1
说明
  • key:键名

  • 返回值:key不存在为true,key存在为false

  • value:值

示例

redisTemplate.opsForValue().setIfAbsent("key","value");
  • 1

3.键存在时设置

作用

当key存在时设置,类似set key value XX

方法
Boolean setIfPresent(K key, V value);
  • 1
参数说明
  • 返回值:key存在为true,key不存在为false

  • key:键名

  • value:值

示例

redisTemplate.opsForValue().setIfPresent("key","value");
  • 1

4.同时设值过期时间(参数为:TimeUnit)

作用

在设置完键值对后,设置过期时间,类似于setex key seconds value

方法
void set(K key, V value, long timeout, TimeUnit unit);

Boolean setIfAbsent(K key, V value, long timeout, TimeUnit unit);

Boolean setIfPresent(K key, V value, long timeout, TimeUnit unit);
  • 1
  • 2
  • 3
  • 4
  • 5
说明
  • key:键名

  • value:值

  • timeout:多少时间单位

  • unit:时间单位

    • TimeUnit.NANOSECONDS:纳秒
    • TimeUnit.MICROSECONDS:微秒
    • TimeUnit.MILLISECONDS:毫秒
    • TimeUnit.SECONDS:秒种
    • TimeUnit.MINUTES:分钟
    • TimeUnit.HOURS:小时
    • TimeUnit.DAYS:天
示例
//过期时间为一秒钟
redisTemplate.opsForValue().set("key","value",1,TimeUnit.SECONDS);

//过期时间为一分钟
redisTemplate.opsForValue().setIfAbsent("key","value",1,TimeUnit.MINUTES);

//过期时间为二小时
redisTemplate.opsForValue().setIfPresent("key","value",1,TimeUnit.HOURS);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

5.同时设置过期时间(单位:Duration)

作用

在设置完键值对后,设置过期时间,类似于setex key seconds value

方法
void set(K key, V value, Duration timeout);

default void setIfAbsent(K key, V value, Duration timeout);

Boolean setIfPresent(K key, V value, Duration timeout);
  • 1
  • 2
  • 3
  • 4
  • 5
说明
  • key:键名

  • value:值

  • timeout:时间单位,可链式调用

    • Duration.ofDays(1):天
    • Duration.ofHours(1):时
    • Duration.ofMinutes(1):分
    • Duration.ofSeconds(1):秒
    • Duration.ofMillis(1):毫秒
    • Duration.ofNanos(1):纳秒
示例
//过期时间是1天1小时
redisTemplate.opsForValue().set("key","value", Duration.ofDays(1).ofHours(1));

//过期时间是2天1小时
redisTemplate.opsForValue().setIfAbsent("key","value", Duration.ofDays(2).ofHours(1));

//过期时间是3天3秒钟
redisTemplate.opsForValue().setIfPresent("key","value", Duration.ofDays(3).ofSeconds(3));
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

6.批量设置键值对

作用

设置多个键值对,类似于mset key value [key value …]

方法

void multiSet(Map<? extends K, ? extends V> map);
  • 1

说明

  • map:多个键值对

示例

Map map=new HashMap();
map.put("k1","v1");
map.put("k2","v2");
redisTemplate.opsForValue().multiSet(map);
  • 1
  • 2
  • 3
  • 4

7.当key都不存在时才批量设置键值对

作用

当给的所有key都不存在,就批量设置键值对,类似于msetnx key value[key value …]

方法

Boolean multiSetIfAbsent(Map<? extends K, ? extends V> map);
  • 1

说明

  • 返回值:key都不存在就为true,否则为false

  • map:多个键值对

示例

Map map=new HashMap();
map.put("k1","v1");
map.put("k2","v2");
redisTemplate.opsForValue().multiSetIfAbsent(map);
  • 1
  • 2
  • 3
  • 4

二.获取

1.获取key的值

作用

获取key的值,类似于get key

方法

V get(Object key);
  • 1

说明

  • 返回值:key的值
  • key:键名

示例

redisTemplate.opsForValue().get("key");
  • 1

2.获取key并删除

作用

获取key的值并删除,类似于getdel key

方法

V getAndDelete(K key);
  • 1

说明

  • 返回值:key的旧值
  • key:键名

示例

redisTemplate.opsForValue().getAndDelete("key");
  • 1

3.获取旧值并设置新值

作用

获取key的旧值,并设置新值,类似于getset key value

方法

V getAndSet(K key,V value);
  • 1

说明

  • 返回值:key的旧值
  • key:键名
  • value:要设置的值

示例

redisTemplate.opsForValue().getAndSet("key","value");
  • 1

4.获取key的值并设置过期时间(单位:TimeUnit)

作用

获取key的之后,之后设置过期时间,类似于getex key

方法

V getAndExpire(K key, long timeout, TimeUnit unit);
  • 1

说明

  • 返回值:key的值

  • key:键名

  • timeout:多少时间单位

  • unit:时间单位

    • TimeUnit.NANOSECONDS:纳秒
    • TimeUnit.MICROSECONDS:微秒
    • TimeUnit.MILLISECONDS:毫秒
    • TimeUnit.SECONDS:秒种
    • TimeUnit.MINUTES:分钟
    • TimeUnit.HOURS:小时
    • TimeUnit.DAYS:天

示例

redisTemplate.opsForValue().getAndExpire("key",1,TimeUnit.HOURS);
  • 1

5.获取key的值并设置过期时间(单位:Duration)

作用

获取key的之后,之后设置过期时间,类似于getex key

方法

V getAndExpire(K key, Duration timeout);
  • 1

说明

  • 返回值:key的值
  • key:键名
  • timeout:时间单位,可链式调用
    • Duration.ofDays(1):天
    • Duration.ofHours(1):时
    • Duration.ofMinutes(1):分
    • Duration.ofSeconds(1):秒
    • Duration.ofMillis(1):毫秒
    • Duration.ofNanos(1):纳秒

示例

//过期时间是3天3小时
redisTemplate.opsForValue().getAndExpire("key",Duration.ofDays(3).ofSeconds(3));
  • 1
  • 2

6.获取key的值并清除过期时间

作用

先获取key的值然后删除过期时间,类似于 set key value KEEPTTL

方法

V getAndPersist(K key);
  • 1

说明

  • 返回值:key的值
  • key:键名

示例

redisTemplate.opsForValue().getAndPersist("key");
  • 1

7.批量获取值

作用

批量获取key的值,类似于mget key [key …]

方法

List<V> multiGet(Collection<K> keys);
  • 1

说明

  • 返回值:多个key的值
  • keys:多个键名

示例

List<String> list=new ArrayList<>();
list.add("k1");
list.add("k2");
redisTemplate.opsForValue().multiGet(list);
  • 1
  • 2
  • 3
  • 4

三 .自增、自减

1. 自增1

作用

给指定的key自增1,类似incr key

方法

Long increment(K key);
  • 1

说明

  • 返回值:自增后的值
  • key:键名

示例

redisTemplate.opsForValue().increment("key");
  • 1

2. 自减1

作用

给指定的key自减1,类似decr key

方法

Long decrement(K key);
  • 1

说明

  • 返回值:自减后的值
  • key:键名

示例

redisTemplate.opsForValue().decrement("key");
  • 1

3.自增指定整数

作用

给指定的key自增指定整数值,类似incrby key increment

方法

Long increment(K key, long delta);
  • 1

说明

  • 返回值:自增后的值
  • key:键名
  • delta:要增加的值

示例

redisTemplate.opsForValue().increment("key",3);
  • 1

4.自减指定整数

作用

给指定的key自减指定整数值,类似decrby key increment

方法

Long decrement(K key, long delta);
  • 1

说明

  • 返回值:自减后的值
  • key:键名
  • delta:要减的值

示例

redisTemplate.opsForValue().decrement("key",3);
  • 1

5.自增指定小数

作用

给指定的key自减指定小数值,类似incrbyfloat key increment

方法

Double increment(K key, double delta);
  • 1

说明

  • 返回值:自增后的值
  • key:键名
  • delta:要增加的值

示例

redisTemplate.opsForValue().increment("key",3.3);
  • 1

四.操作BitMap

1.设置位

作用

在偏移值设置位,类似于setbit key offset value

方法

Boolean setBit(K key, long offset, boolean value);
  • 1

说明

  • 返回值:成功为true,失败为false
  • key:键名
  • offset:偏移值
  • value:1为true,0为false

示例

redisTemplate.opsForValue().setBit("key",100,true);
  • 1

2.获取位

作用

获取偏移值的位,类似于setbit key offset value

方法

Boolean getBit(K key, long offset);
  • 1

说明

  • 返回值:1为true,0为false
  • key:键名
  • offset:偏移值

示例

redisTemplate.opsForValue().getBit("key",100);
  • 1

3.bitfield

目前不清楚,敬请期待

五.其他

1.追加字符串

作用

在指定的key后面追加字符串,类似于append key value

方法

Integer append(K key, String value);
  • 1

说明

  • 返回值:追加后字符串的长度
  • key:键名
  • value:需要追加的字符串

示例

  redisTemplate.opsForValue().append("key","value");
  • 1

2.获得长度

作用

获得一个key的值的长度,类似strlen key

方法

Long size(K key);
  • 1

说明

  • 返回值:字符串的长度
  • key:键名

示例

redisTemplate.opsForValue().size("key");
  • 1

3.获得指定范围的字符串

作用

获得key的值在start-stop的内容,类似getrange key start stop

方法

String get(K key, long start, long end);
  • 1

说明

  • 返回值:start-stop的内容
  • key:键名
  • start:开始索引
  • end:结束索引

示例

redisTemplate.opsForValue().get("key",0,5);
  • 1

4.替换指定索引的内容

作用

将索引为offset的地方地方为指定的字符串,类似于setrange key offset value

方法

void set(K key, V value, long offset);
  • 1

说明

  • key:键名

  • value:需要替换的内容

  • offset:指定索引

示例

redisTemplate.opsForValue().set("key","value",0);
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/448497
推荐阅读
相关标签
  

闽ICP备14008679号