Spring Boot整合Redis简单示例。
1. 导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2. 配置连接
spring:
redis:
host: 127.0.0.1
port: 6379
3. 测试
@SpringBootTest
class SpringbootTestApplicationTests {
@Autowired
private RedisTemplate redisTemplate;
@Test
void testRedis(){
redisTemplate.opsForValue().set("username", "zhangsan");
System.out.println(redisTemplate.opsForValue().get("username"));
}
}
打印结果:
@Component
@AllArgsConstructor
@NoArgsConstructor
@Data
public class People {
private String name;
private Integer age;
}
然后,测试set一个对象,会出现报错:序列化异常,无法序列化。
@SpringBootTest
class SpringbootTestApplicationTests {
@Autowired
private RedisTemplate redisTemplate;
@Test
void testRedis2(){
People people = new People("张三", 18);
redisTemplate.opsForValue().set("people", people);
System.out.println(redisTemplate.opsForValue().get("people"));
}
}
打印结果:
@Component
@AllArgsConstructor
@NoArgsConstructor
@Data
public class People implements Serializable {
private String name;
private Integer age;
}
最后,可以看到set成功。
打印结果:
自定义redisTemplate
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> template = new RedisTemplate();
template.setConnectionFactory(redisConnectionFactory);
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(Object.class);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
objectMapper.activateDefaultTyping(
objectMapper.getPolymorphicTypeValidator(),
ObjectMapper.DefaultTyping.NON_FINAL,
JsonTypeInfo.As.PROPERTY
);
serializer.setObjectMapper(objectMapper);
template.setKeySerializer(stringRedisSerializer);
template.setValueSerializer(serializer);
template.setHashKeySerializer(stringRedisSerializer);
template.setHashValueSerializer(serializer);
template.afterPropertiesSet();
return template;
}
}
重新执行测试方法,查看redis中的key:
4. 连接远程服务器上的redis
以阿里云服务器为例,连接远程服务器上的redis,步骤如下:
1. 设置服务器上redis配置
bind 127.0.0.1
protected-mode yes
bind 默认是所有可用,可以看到配置文件是注释掉的。
bind 127.0.0.1 只能在本地访问,想要远程访问可以如下3种方式,任选一种。
1、#bind 127.0.0.1 (注释掉bind,默认所有可用。)
2、bind * -:😗 (使用 * 通配,像默认一样,所有可用。)
3、bind 访问端的本机IP(绑定访问端的本机IP,只有这个IP可以访问。想要知道自己电脑的本机IP可以在百度搜索IP,可以看到“IP查询”->“本机IP”。)
2. 设置云服务器安全组
在安全组中添加入方向和出方向规则,开放redis的6379端口。
3. 设置云服务器防火墙
防火墙开放端口6379。
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload
4. 测试
- telnet 服务器IP 6379 (确保远程redis服务端已启动,端口6379被监听)
- 使用本地redis客户端连接远程redis服务端
至此,测试连接成功。
5. 程序测试
修改配置连接
spring:
redis:
host: 服务器IP
port: 6379
启动测试方法testRedis2。
执行成功,打印结果:
查看服务器上的redis中的key:
如何在Linux系统上安装Redis,请查看Linux上安装Redis。