文章目录
Redis介绍
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
随着Spring Boot支持的组件越来越多,技术也越来越成熟。在Spring Boot 2.X以后,对Redis的支持不再仅仅只是提供越来越强大的API,更是在底层,将Redis的默认客户端从Jedis
改为了Lettuce
。
#Lettuce和Jedis
Lettuce
和Jedis
都是Java开发中,与Redis进行交互的中间件。Jedis
在实现上是直连redis server,多线程环境下非线程安全,除非使用连接池,为每个Jedis实例增加物理连接。Lettuce
基于Netty的连接实例(StatefulRedisConnection),可以在多个线程间并发访问,且线程安全,满足多线程环境下的并发访问,同时它是可伸缩的设计,一个连接实例不够的情况也可以按需增加连接实例。
添加依赖包
compile 'org.springframework.boot:spring-boot-starter-data-redis'
tips:在Spring Boot 2.X后,Jedis
的相关依赖已经被剔除,改为了Lettuce
。
配置Redis
在application.yml
中添加redis相关配置
spring:
redis:
host: #地址
port: #端口
password: #密码
timeout: # 连接超时时间(毫秒)
lettuce:
pool:
max-active: #连接池最大连接数(使用负值表示没有限制) 默认 8
max-wait: # 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1
max-idle: # 连接池中的最大空闲连接 默认 8
min-idle: # 连接池中的最小空闲连接 默认 0
测试
一切准备就绪后,写个junit测试类来验证代码的正确性
Notice.java
package com.boot.demo.entity;
import java.io.Serializable;
public class Notice implements Serializable {
private static final long serialVersionUID = 210818469999970139L;
private String id;
private String context;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getContext() {
return context;
}
public void setContext(String context) {
this.context = context;
}
}
RedisTest.java
package com.boot.demo.test;
import com.boot.demo.entity.Notice;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
@RunWith(SpringRunner.class)
@SpringBootTest(properties = "spring.main.web-application-type=reactive")
public class RedisTest {
@Resource(name = "redisTemplate")
private ValueOperations<String,Object> valueOperations;
@Test
public void get(){
Notice notice = new Notice();
notice.setId("111");
notice.setContext("Hello");
String key = "string:notice";
valueOperations.set(key,notice);
System.out.println(notice);
notice = (Notice)valueOperations.get(key);
System.out.println(notice);
}
}
XXXOperations
在Spring Boot中,对Redis的支持,其实主要是通过Spring Data Redis
这个框架去完成的,它对Redis的支持,主要体现在框架中的XXXOperations,我们在实际开发中可以通过注入这些Operations来完成IO操作。下面简单的列举了几种常用的Operations
接口 | 描述 |
---|---|
HashOperations | 处理Hash结构的相关操作 |
ListOperations | 处理List结构的相关操作 |
SetOperations | 处理Set结构的相关操作 |
ValueOperations | 处理String结构的相关操作 |
ZSetOperations | 处理ZSet(或者 Sorted Set)结构的相关操作 |
想了解更多关于XXXOperations的知识的话,可以访问官方地址