本文讲解了SpringBoot整合Redis的入门基本应用,包括redis的环境配置以及简单的功能使用
centOS7+Redis 6.2.6+SpringBoot 2.6.4
首先从官网下载Redis
【Redis官网下载: Redis】并解压,
然后配置环境
yum install gcc-c++
make
make install
然后我们需要对redis.conf配置文件进行一些基础的配置,打开redis.conf可见如下配置
bind 127.0.0.1 -::1
绑定了可以通过什么ip对redis进行访问,这里先将其注释,以防无法远程访问
protected-mode no
配置保护模式,设置为no开放远程访问
port 6379
端口号
timeout 5000
连接超时时间配置
daemonize yes
开启守护进程
requirepass 密码
redis的访问密码
如果在远程连接的时候无法连接,别忘了关闭防火墙和设置组策略
service iptables stop //关闭iptable防火墙
systemctl stop firewalld //关闭firewalld防火墙
执行命令:
redis-server redis.conf
客户端访问:
redis-cli
如果是远程访问,可加上host与port :
redis-cli -h xx.xx.xx.xx -p 6379
命令行输入ping,返回pong即连接成功
127.0.0.1:6379> ping
PONG
通过命令行简单的测试下set
127.0.0.1:6379> set user test1
OK
127.0.0.1:6379> GETRANGE user 0 -1
"test1"
至此,环境配置成功。
org.springframework.boot
spring-boot-starter-data-redis
spring:
redis:
host: 127.0.0.1 #redis的ip地址
port: 6379
timeout: 5000 #连接超时
password: 密码
简单的存取一下字符串
//获取RedisTemplate对象
@Autowired
private RedisTemplate redisTemplate;
@Test
void contextLoads() {
//set字符串
redisTemplate.opsForValue().set("user","test1");
System.out.println(redisTemplate.opsForValue().get("user"));
}
成功存入redis
127.0.0.1:6379> get user
"test1"
自定义序列化方式,以便于以Json格式存取实体对象,默认情况下会使用JdkSerializationRedisSerializer进行序列化
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) {
RedisTemplate template = new RedisTemplate<>();
//配置连接工厂
template.setConnectionFactory(connectionFactory);
//使用Jackson配置Object的序列化
Jackson2JsonRedisSerializer
自定义一个User类,实现Serializable接口
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable {
private Integer id;
private String username;
}
使用刚才自定义的 RedisTemplate
@Autowired
@Qualifier("redisTemplate")
private RedisTemplate redisTemplate;
@Test
public void serializableTest(){
//set值
redisTemplate.opsForValue().set("user1",new User(1,"name"));
//get值
System.out.println(redisTemplate.opsForValue().get("user1"));
}
User对象已经以json的形式序列化存储到redis中了
127.0.0.1:6379> get user1
"{\"id\":1,\"username\":\"name\"}"