第四章 Redis
4.1 Redis环境搭建与测试
使用docker来安装redis,docker笔记链接: docker笔记.
-
从docker中安装redis
sudo docker pull daocloud.io/library/redis:latest
-
启动redis
sudo docker sun -d -p 6379:6379 --name myredis daocloud.io/library/redis
-
在宝塔中安装redis的管理工具
-
进入容器打开Redis测试连接性
[root@bogon ~]# docker exec -it myredis /bin/sh /data # redis-cli -p 6379 127.0.0.1:6379> ping PONG 127.0.0.1:6379>
可以使用命令来测试了!
-
redis命令:https://www.redis.net.cn/order/
4.2 Springboot整合redis
-
引入依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
-
编写配置文件
#redis配置 spring.redis.host=localhost
-
使用RedisTemplate和StringRedisTemplate操作redis
@Autowired RedisTemplate redisTemplate; @Autowired StringRedisTemplate stringRedisTemplate;
RedisTemplate:操作的是对象
StringRedisTemplate:操作的是字符串
stringRedisTemplate.opsForValue()//操作字符串 stringRedisTemplate.opsForList()//操作列表 stringRedisTemplate.opsForHash()//操作hash //set(set集合),ZSet(有序集合)
-
序列化问题
当使用RedisTemplate将用户数据保存进去时,会报错,原因是User类没有序列化,当序列化后,默认使用Jdk序列化,我们可以自己写一个配置类,实现RedisTemplate方法来制定json序列化
package com.maoyan.springbootcache.config; import com.maoyan.springbootcache.pojo.User; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import java.net.UnknownHostException; @Configuration public class MyRedisConfig { @Bean public RedisTemplate<Object, User> userRedisTemplate( RedisConnectionFactory redisConnectionFactory) throws UnknownHostException { RedisTemplate<Object,User> template = new RedisTemplate<Object, User>(); template.setConnectionFactory(redisConnectionFactory); Jackson2JsonRedisSerializer<User> userJackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<User>(User.class); template.setDefaultSerializer(userJackson2JsonRedisSerializer); return template; } }
使用:
@Autowired RedisTemplate<Object, User> userRedisTemplate; @Test void contextLoads() { //User user = userMapper.getUserById(1); User user = userService.getUser(1); // System.out.println(user); stringRedisTemplate.opsForValue().append("msg","worddd"); userRedisTemplate.opsForValue().set("user01",user); }
成功实现json序列化。