RedisTemplate之opsForValue()

前言

可阅读这篇文章了解Spring Boot Redis操作!

ValueOperations


使用ValueOperations可以对Redis的单个值进行操作,一个key 对应一个Value,不能一个key对应多个值。

	@Autowired
	private StringRedisTemplate stringRedisTemplate;

	private ValueOperations vo;

    
	@Test
    void valueOperations() {
    	vo = redisTemplate.opsForValue();
		vo.set("key", "value");
		log.debug("获得一个值:{}",vo.get("key"));
	}

ValueOperations中的方法

方法 返回值 描述
1.set(K key, V value) void 新增一个字符串类型的值,key是键,value是值。
2.set(K key, V value, long offset) void 覆盖从指定位置开始的值。
3.set(K key, V value, long timeout, TimeUnit unit) void 设置变量值的过期时间。
4.set(K key, V value, Duration timeout) void 设置变量值的过期时间
5.get(Object key) V 获取key键对应的值。
6.append(K key, String value) Integer 在原有的值基础上新增字符串到末尾。
7.get(K key, long start, long end) void 截取key键对应值得字符串,从开始下标位置开始到结束下标的位置(包含结束下标)的字符串。
8.getAndSet(K key, V value) V 获取原来key键对应的值并重新赋新值。
9.setBit(K key, long offset, boolean value) Boolean key键对应的值value对应的ascii码,在offset的位置变为value。
10.getBit(K key, long offset) Boolean 判断指定的位置ASCII码的bit位是否为1。
11.size(K key) Long 获取指定字符串的长度
12.increment(K key, double delta) Double 以增量的方式将double值存储在变量中。
13.increment(K key, long delta) Long 以增量的方式将long值存储在变量中。
14.setIfAbsent(K key, V value) Boolean 如果键不存在则新增,存在则不改变已经有的值。
15.multiSet(Map map) void 设置map集合到redis。
16.multiGet(Collection keys) List 根据集合取出对应的value值。
17.multiSetIfAbsent(Map map) List 如果对应的map集合名称不存在,则添加;如果存在则不做修改。

1.set(K key, V value)

新增一个字符串类型的值,key是键,value是值。

vo.set("k1", "v1");
String k1 = vo.get("k1");

2.set(K key, V value, long offset)

覆盖从指定位置开始的值。

vo.set("k3", "aaa");
vo.set("k3", "k3", 2);

3.set(K key, V value, long timeout, TimeUnit unit)

设置变量值的过期时间。

vo.set("k2","v2",1, TimeUnit.MINUTES);

4.set(K key, V value, Duration timeout)

设置变量值的过期时间

vo.set("k4","k4", Duration.ofSeconds(60));

5.get(Object key)

获取key键对应的值。

vo.set("key","a");
String value = vo.get("key");

6.append(K key, String value)

在原有的值基础上新增字符串到末尾。

vo.set("key","a");
vo.append("key","bb");
String value = vo.get("key");

7.get(K key, long start, long end)

截取key键对应值得字符串,从开始下标位置开始到结束下标的位置(包含结束下标)的字符串。

vo.set("key", "abcdef");
String value = vo.get("key", 1, 4);
log.debug("[key] = {}", value);

8.getAndSet(K key, V value)

获取原来key键对应的值并重新赋新值。

vo.set("key", "abcdef");
String value = vo.getAndSet("key","dnf");
String value2 = vo.get("key");
log.debug("[key1] = {}", value);
log.debug("[key2] = {}", value2);

9.setBit(K key, long offset, boolean value)

key键对应的值value对应的ascii码,在offset的位置(0开始,从左向右数)变为value。

vo.set("key","a");
boolean flag = vo.setBit("key",3,true);

判断指定的位置ASCII码的bit位是否为1。

二进制 布尔值
0 false
1 true

“a”字符对应的ascii码二进制为:0110 0001
换成布尔值就是:false true true false false false false true
上面的例子就是将“a”字符的第4个字节的布尔值变为成true(1)
也就是0111 0001,此字节对应的ascii码字符为“q”。

flag为offset对应字节的布尔值:“a”字符的二进制ascii码0110 0001,第4个字节为0,也就是返回值为false。也可以表示为判断指定的位置ASCII码的bit位是否为1。

10.getBit(K key, long offset)

判断指定的位置ASCII码的bit位是否为1。

vo.set("key","a");
boolean flag = vo.getBit("key",1);

与setBit类似,判断“a”字符的二进制ascii码第2个字节是否为1。

11.size(K key)

获取指定字符串的长度

vo.set("key", "abcdef");
long size = vo.size("key");
log.debug("key的size为:{}", size);

12.increment(K key, double delta)

以增量的方式将double值存储在变量中。

vo.increment("count", 2);
vo.increment("count", 1);

13.increment(K key, long delta)

以增量的方式将long值存储在变量中。

vo.increment("count", 2);
vo.increment("count", 1);

14.setIfAbsent(K key, V value)

如果键不存在则新增,存在则不改变已经有的值。

vo.set("key", "abc");
vo.setIfAbsent("key","def");
vo.setIfAbsent("key2","123");

15.multiSet(Map map)

设置map集合到redis。

        Map maps = new HashMap<>();
        maps.put("1","aaa");
        maps.put("2","bbb");
        maps.put("3","ccc");
        vo.multiSet(maps);

key和value必须是string类型

16.multiGet(Collection keys)

根据集合取出对应的value值。

List list = Arrays.asList("1","2","3");
log.debug(Arrays.toString(vo.multiGet(list).toArray()));

17.multiSetIfAbsent(Map map)

如果对应的map集合名称不存在,则添加;如果存在则不做修改。

Map maps = new HashMap<>();
maps.put("4","eee");
maps.put("1","ddd");
maps.put("5","fff");
vo.multiSetIfAbsent(maps);

你可能感兴趣的:(RedisTemplate之opsForValue())