RedisTemplate是一个spring框架的模板,它提供了基于redis的常用操作,并且支持对象存储,可以让我们更方便的操作redis数据库。它提供了一系列的API,可以支持我们实现redis的各种操作,下面介绍几个常用的操作。
1、String操作
String是redis中最常用的数据类型,RedisTemplate提供了多种API来支持对String类型的操作,比如:
- set:设置key-value,如果key已存在,则覆盖原有的value
- get:获取key对应的value
- setIfAbsent:设置key-value,如果key已存在,则不会覆盖原有的value
- multiSet:设置多个key-value,如果key已存在,则覆盖原有的value
- multiGet:获取多个key对应的value
- increment:对key对应的value做自增操作
- append:追加字符串到key对应的value后面
// 设置key-value
redisTemplate.opsForValue().set("key1", "value1");
// 获取key对应的value
String value = redisTemplate.opsForValue().get("key1");
// 设置多个key-value
Map map = new HashMap<>();
map.put("key2", "value2");
map.put("key3", "value3");
redisTemplate.opsForValue().multiSet(map);
// 获取多个key对应的value
List values = redisTemplate.opsForValue().multiGet(Arrays.asList("key1", "key2", "key3"));
// 对key对应的value做自增操作
redisTemplate.opsForValue().increment("key4", 1);
// 追加字符串到key对应的value后面
redisTemplate.opsForValue().append("key5", "appendValue");
2、Hash操作
Hash是redis中常用的数据类型,RedisTemplate提供了多种API来支持对Hash类型的操作,比如:
- put:设置hash中field-value,如果field已存在,则覆盖原有的value
- get:获取hash中field对应的value
- multiPut:设置多个field-value,如果field已存在,则覆盖原有的value
- multiGet:获取多个field对应的value
- entries:获取hash中所有field-value
- increment:对hash中field对应的value做自增操作
// 设置field-value
redisTemplate.opsForHash().put("hashKey", "field1", "value1");
// 获取field对应的value
Object value = redisTemplate.opsForHash().get("hashKey", "field1");
// 设置多个field-value
Map map = new HashMap<>();
map.put("field2", "value2");
map.put("field3", "value3");
redisTemplate.opsForHash().putAll("hashKey", map);
// 获取多个field对应的value
List
3、List操作
List是redis中常用的数据类型,RedisTemplate提供了多种API来支持对List类型的操作,比如:
- leftPush:从list头部添加元素
- rightPush:从list尾部添加元素
- leftPop:从list头部弹出元素
- rightPop:从list尾部弹出元素
- range:获取list中指定范围的元素
- size:获取list的长度
- remove:删除list中指定的元素
// 从list头部添加元素
redisTemplate.opsForList().leftPush("listKey", "value1");
// 从list尾部添加元素
redisTemplate.opsForList().rightPush("listKey", "value2");
// 从list头部弹出元素
Object value1 = redisTemplate.opsForList().leftPop("listKey");
// 从list尾部弹出元素
Object value2 = redisTemplate.opsForList().rightPop("listKey");
// 获取list中指定范围的元素
List values = red