SpringBoot系列:Redis的不同类型值的存取(二)
程序员文章站
2022-06-21 14:58:54
序言在SpringBoot系列:简单整合redis(一)文章中已经具体的阐述了怎么安装Redis及SpringBoot整合Redis的环境的配置等,在接下来关于Redis的文章中就不会去一一阐述环境的配置了。Redis的不同类型值的存取/** * Redis的值的各种方式的存储与取出 */@RestController@RequestMapping("RedisStoreValueTest")public class RedisController { @Autowired...
序言
在SpringBoot系列:简单整合redis(一)文章中已经具体的阐述了怎么安装Redis及SpringBoot整合Redis的环境的配置等,在接下来关于Redis的文章中就不会去一一阐述环境的配置了。
Redis的不同类型值的存取
/**
* Redis的值的各种方式的存储与取出
*/
@RestController
@RequestMapping("RedisStoreValueTest")
public class RedisController {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Autowired
private RedisTemplate<String, Object> redisTemplate;
/**
* set集合数据:存数据
*/
@PostMapping("/setDataOfSet")
public String setDataOfSet() {
Set<String> set = new HashSet<String>();
set.add("TestSetData1");
set.add("TestSetData2");
set.add("TestSetData3");
//存入Set集合数据
redisTemplate.opsForSet().add("setData", set);
return "ok";
}
/**
* set集合数据:取数据
*/
@GetMapping("/getDataOfSet")
public Set<Object> getDataOfSet() {
//获取Set集合数据
Set<Object> resultSet = redisTemplate.opsForSet().members("setData");
return resultSet;
}
/**
* Map集合数据操作:存数据
*/
@PostMapping("/setDataOfMap")
public String setDataOfMap() {
Map<String, String> map1 = new HashMap<>();
map1.put("key1", "map1-test1");
map1.put("key2", "map1-test2");
//方法一,这里使用字符串的格式存储,还可以设置过期时间为60秒
redisTemplate.opsForValue().set("mapData_1", map1, 60, TimeUnit.SECONDS);
Map<String, String> map2 = new HashMap<>();
map2.put("key1", "map2-test1");
map2.put("key2", "map2-test2");
//方法二,以map形式存进去,这种情况过期时间默认调的是配置文件里面的
redisTemplate.opsForHash().putAll("mapData_2", map2);
return "ok";
}
/**
* Map集合数据操作:取数据
*/
@GetMapping("/getDataOfMap")
public String getDataOfMap() {
//方法一:对应上面存的方法一,把map数据(这里是String格式)取出来,赋予给Object,可以转换json对象
Object mapData1 = redisTemplate.boundValueOps("mapData_1").get();
String json = JSON.toJSONString(mapData1);
//方法二:对应上面存的方法二,这里的取值就是操作map
Map<Object, Object> mapData2 = redisTemplate.opsForHash().entries("mapData_2");
Set<Object> resultMapSet = redisTemplate.opsForHash().keys("mapData_2");
List<Object> resultMapList = redisTemplate.opsForHash().values("mapData_2");
String value = (String) redisTemplate.opsForHash().get("mapData_2", "key1");
System.out.println("mapData2:" + mapData2);
System.out.println("通过Set集合方式取Key值resultMapSet:" + resultMapSet);
System.out.println("通过List方式取Value值resultMapList:" + resultMapList);
System.out.println("通过单一的key1去取对应的值value:" + value);
return json;
}
/**
* List集合数据操作:存数据
*/
@PostMapping("/setDataOfList")
public String setDataOflist() {
List<String> list1=new ArrayList<>();
list1.add("list1测试值a1");
list1.add("list1测试值a2");
list1.add("list1测试值a3");
List<String> list2=new ArrayList<>();
list2.add("list2测试值b1");
list2.add("list2测试值b2");
list2.add("list2测试值b3");
/**
* 从左往右入栈,存入列表(用作堆栈,先进后出)
* lpush: 1 --> 2 --> 3
* lrange 3 --> 2 --> 1
*/
redisTemplate.opsForList().leftPush("listData1",list1);
/**
* 从右往左入从栈底入栈,存入列表(用作队列,先进先出)
* rpush: 1 --> 2 --> 3
* rrange 1 --> 2 --> 3
*/
redisTemplate.opsForList().rightPush("listData2",list2);
return "ok";
}
/**
* List集合数据操作:取数据
*/
@GetMapping("/getDataOfList")
public Map<String,Object> getDataOfList() {
//弹出最左边元素
List<String> resultList1= (List<String>) redisTemplate.opsForList().leftPop("listData1");
System.out.println(resultList1);
//弹出最右边元素
List<String> resultList2= (List<String>) redisTemplate.opsForList().rightPop("listData2");
System.out.println(resultList2);
Map<String,Object> map = new HashMap<>();
map.put("listData1",resultList1);
map.put("listData2",resultList2);
return map;
}
/**
* 普通key-value值操作
*/
@GetMapping("setDataOfKeyValue")
public String setDataOfKeyValue() {
redisTemplate.opsForValue().set("key_value_1","value1");
redisTemplate.opsForValue().set("key_value_2","value2");
String result1=redisTemplate.opsForValue().get("key_value_1").toString();
String result2=redisTemplate.opsForValue().get("key_value_2").toString();
System.out.println("result:"+result1+" "+result2+" ");
return result1+result2;
}
/**
* stringRedisTemplate对字符串值得存与取
* @return
*/
@GetMapping("stringRedisTemplate")
public String stringRedisTemplate() {
stringRedisTemplate.opsForValue().set("String","stringRedisTemplate");
String result= stringRedisTemplate.opsForValue().get("String");
return result;
}
}
在这一章的内容我把一些常用的大致写在上面的接口中,可以自己手动写写运行看一看,具体解析也在代码中,这些关于Redis存取值操作只写了一部分,还有大量的方法没有一一列举,可以试一下其它方法的作用,参考开发文档。
自动更新缓存
以上的都是手动的,关于通过注解自动更新缓存,在第一篇文章中最后简单介绍了其的使用,比如:
@Service
public class CrmBannerServiceImpl extends ServiceImpl<CrmBannerMapper, CrmBanner> implements CrmBannerService {
@Cacheable(value = "banner", key = "'selectIndexList'")
@Override
public List<CrmBanner> selectIndexList() {
List<CrmBanner> list = baseMapper.selectList(
new QueryWrapper<CrmBanner>().orderByDesc("sort")
);
return list;
}
}
文章到这里先结束了,后续。。。。。
本文地址:https://blog.csdn.net/qq_37712731/article/details/109802632