可阅读这篇文章了解Spring Boot Redis操作!
使用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"));
}
方法 | 返回值 | 描述 |
---|---|---|
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 extends K,? extends V> map) | void | 设置map集合到redis。 |
16.multiGet(Collection keys) | List |
根据集合取出对应的value值。 |
17.multiSetIfAbsent(Map extends K,? extends V> map) | List |
如果对应的map集合名称不存在,则添加;如果存在则不做修改。 |
新增一个字符串类型的值,key是键,value是值。
vo.set("k1", "v1");
String k1 = vo.get("k1");
覆盖从指定位置开始的值。
vo.set("k3", "aaa");
vo.set("k3", "k3", 2);
设置变量值的过期时间。
vo.set("k2","v2",1, TimeUnit.MINUTES);
设置变量值的过期时间
vo.set("k4","k4", Duration.ofSeconds(60));
获取key键对应的值。
vo.set("key","a");
String value = vo.get("key");
在原有的值基础上新增字符串到末尾。
vo.set("key","a");
vo.append("key","bb");
String value = vo.get("key");
截取key键对应值得字符串,从开始下标位置开始到结束下标的位置(包含结束下标)的字符串。
vo.set("key", "abcdef");
String value = vo.get("key", 1, 4);
log.debug("[key] = {}", 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);
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。
判断指定的位置ASCII码的bit位是否为1。
vo.set("key","a");
boolean flag = vo.getBit("key",1);
与setBit类似,判断“a”字符的二进制ascii码第2个字节是否为1。
获取指定字符串的长度
vo.set("key", "abcdef");
long size = vo.size("key");
log.debug("key的size为:{}", size);
以增量的方式将double值存储在变量中。
vo.increment("count", 2);
vo.increment("count", 1);
以增量的方式将long值存储在变量中。
vo.increment("count", 2);
vo.increment("count", 1);
如果键不存在则新增,存在则不改变已经有的值。
vo.set("key", "abc");
vo.setIfAbsent("key","def");
vo.setIfAbsent("key2","123");
设置map集合到redis。
Map maps = new HashMap<>();
maps.put("1","aaa");
maps.put("2","bbb");
maps.put("3","ccc");
vo.multiSet(maps);
key和value必须是string类型
根据集合取出对应的value值。
List list = Arrays.asList("1","2","3");
log.debug(Arrays.toString(vo.multiGet(list).toArray()));
如果对应的map集合名称不存在,则添加;如果存在则不做修改。
Map maps = new HashMap<>();
maps.put("4","eee");
maps.put("1","ddd");
maps.put("5","fff");
vo.multiSetIfAbsent(maps);