1、用Docker安装Redis
查询redis镜像
docker search redis
拉取镜像下载
docker pull redis
查看本地仓库中是否有该镜像
docker images
安装reids同时设置端口
docker run -d -p 6379:6379 --name myredis redis
查看已经启动的容器
docker run -d -p 6379:6379 --name myredis redis
如果是用的阿里云服务器的话需要在官网开放一下该端口,百度一下即可
如果报错:Error response from daemon: oci runtime error: container_linux.go:247: starting container process
解决方式:报错解决
2、使用RedisDesk测试连接
3、整合项目
1、引入redis启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2、设置redis主机地址
#配置redis主机地址
spring.redis.host=你的IP地址
4、使用Redis
* Redis常见的五大数据类型
* String(字符串)、List(列表)、Set(集合)、Hash(散列)、ZSet(有序集合)
* stringRedisTemplate.opsForValue() -- 操作字符串
* stringRedisTemplate.opsForList() -- 操作列表
* stringRedisTemplate.opsForSet() -- 操作集合
* stringRedisTemplate.opsForHash() -- 操作散列
* stringRedisTemplate.opsForZSet() -- 操作有序集合
* Redis在命令行中有的命令都可以通过以上方法来操作数据
在测试类中引入两个操作数据的模板
@Autowired
StringRedisTemplate stringRedisTemplate; // 操作k-v字符串的
@Autowired
RedisTemplate redisTemplate; // 操作k-v对象的
测试存储字符串
@Test
public void test01() {
// 给Redis中保存一个字符串数据
// stringRedisTemplate.opsForValue().append("msg", "helloRedis");
// 给Redis保存一个列表,插入数据
stringRedisTemplate.opsForList().leftPush("list","1");
stringRedisTemplate.opsForList().leftPush("list","2");
}
测试存储对象
导入自定义的以JSON序列化的配置类
@Autowired
RedisTemplate<Object, Employee> empRedisTemplate; // 以JSON形式序列化存储
// 测试保存对象
@Test
public void test02() {
// 存储对象,对象类必须进行序列化,否则不能存储
// 存储对象的时候,会使用JDK序列化机制,序列化后保存,所以需要自定义配置文件来以JSON的序列化机制进行存储
// Department department = departmentMapper.findById(1);
// redisTemplate.opsForValue().set("emp1", department);
Employee employee = employeeMapper.findById(1);
empRedisTemplate.opsForValue().set("emp2",employee);
}
配置文件
这个配置文件只配置了Employee这个类,需要其他Bean存储,比葫芦画瓢就可以了。
@Configuration
public class MyRedisConfig {
@Bean
public RedisTemplate<Object, Employee> empRedisTemplate(
RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException {
RedisTemplate<Object, Employee> template = new RedisTemplate<Object, Employee>();
template.setConnectionFactory(redisConnectionFactory);
Jackson2JsonRedisSerializer<Employee> ser = new Jackson2JsonRedisSerializer<Employee>(Employee.class);
template.setDefaultSerializer(ser);
return template;
}
}
以JDK序列化存储时的结果
以JSON序列化存储时的结果