SpringBoot整合redis (2)

file

redis中的数据:

file

redis中的key显示出了一个层级关系,这个小技巧对于实际项目有个非常好的作用:通过prefix:suffix这样的形式,可以将redis中存储的数据分出层级。

3.2 RedisTemplate.opsForHash

清空该database下的数据,测试redisTemplate.opsForHash:

@Test public void testHashOps() { String key = "hash"; // 单次往hash中存放一个数据 redisTemplate.opsForHash().put(key, "1", "你好"); Map<String, Object> map = new HashMap<>(); map.put("2", "hello"); map.put("3a", "china1=2"); // 一次性向hash中存放一个map redisTemplate.opsForHash().putAll(key, map); // 获取hash下的所有key和value Map<String, Object> resultMap = redisTemplate.opsForHash().entries(key); for (String hashKey : resultMap.keySet()) { System.out.println(hashKey + ": " + resultMap.get(hashKey)); } }

执行结果:

file

redis:

file

3.3 RedisTemplate.opsForList @Test public void testListOps() { String listKey = "list"; redisTemplate.opsForList().leftPush(listKey, "first value"); // 从list最左边插入数据 redisTemplate.opsForList().leftPush(listKey, "second value but left"); redisTemplate.opsForList().rightPush(listKey, 3); // 从list最右边插入数据 List<Object> list = new ArrayList<>(); list.add("hello"); list.add("http://www.eknown.cn"); list.add(23344); list.add(false); redisTemplate.opsForList().rightPushAll(listKey, list); // 从list右边批量插入数据 long size = redisTemplate.opsForList().size(listKey); if (size > 0) { for (int i = 0; i < size -1 ; i++) { // 从list最左边开始读取list中的数据,注意pop会导致出栈,也就是数据被取出来了(redis中就没有这个值了) // 此处我们读取size-1条数据,仅留下最后一条数据 System.out.println(i + ":" + redisTemplate.opsForList().leftPop(listKey).toString()); } } }

执行上面的脚本,注意在最后的读取list数据代码前面加一个断点,此时redis中是这样的:

file

放开断点,程序继续执行,控制台如下:

file

注意,此时redis中仅剩余最后一条数据,这是由于pop的问题,list中的数据被读取并删除了:

file

好了,这一节主要讲了SpringBoot引入redis,以及使用redis的一些基本操作和相关技巧,在此基础上,我们可以让我们的项目变得更加快速、灵活!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwgxzz.html