Spring Boot中集成Redis
Redis简介
翻译自官网:
Redis是一个开源,使用内存存储数据的结构化存储系统,通常被用作数据库,缓存和消息中间件。支持多种数据结构例如:字符串(strings),散列表(hashes),列表(list),集合(sets),支持范围查询的有序集合(sorted sets with range queries),位图(bitmaps),hyperloglogs和支持半径查询的地理空间索引。 Redis内置了数据复制(replication),Lua脚本(Lua scripting),LRU驱动事件(LRU eviction),事务(transactions)以及不同级别的磁盘持久化(persistence)功能, 并且通过Redis哨兵(Sentinel)和自动分区(Cluster)功能提供了高可用性。
Spring Data Redis简介
Spring Data Redis是Spring Data大家族中的一部分,它为Spring应用程序提供简单配置和使用Redis的能力。就像其它Spring Data家族的成员一样,它提供对框架的高层次和低层次的抽象操作,来和数据仓库进行交互,让开发者不用关注框架的细节,更轻松的去使用框架。
集成
环境:
- Spring Boot v2.0.0.RELEASE
- Spring data Redis v2.0.0.RELEASE
- JDK v1.8
- Redis server v4.0.2
1. 安装并启动Redis
如果使用Mac,你可以通过homebrew安装:
brew install redis
然后启动服务:
redis-server
2. 引入项目需要的依赖
通过Maven引入依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--测试用如果不使用Spring MVC 不需要引用-->
<!--<dependency>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-web</artifactId>-->
<!--</dependency>-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.5.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
</dependencies>
3. 配置Spring Data Redis
@Configuration
public class RedisConfig {
//打印log
private Logger logger = Logger.getLogger(RedisConfig.class.getName());
/**
* 配置redisTemplate,对redis的操作都是通过redisTemplate完成。
* 通过方法参数注入Redis连接工厂。
* @param redisConnectionFactory
* @return
*/
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
RedisTemplate<String, String> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
return redisTemplate;
}
/**
* 配置jedis,一个java的redis客户端。使用单机的默认配置。
* @return
*/
@Bean
public RedisConnectionFactory jedisConnectionFactory(){
JedisConnectionFactory jedisConnectionFactory;
RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration(); //单机模式
jedisConnectionFactory = new JedisConnectionFactory(redisStandaloneConfiguration);
return jedisConnectionFactory;
}
}
Ps:从Spring Data 2.0 开始废弃了直接设置的方式,需要使用单机,哨兵或者集群三种配置模式。见下图:
4. 测试Redis
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = RedisApplication.class)
public class RedisConfigTest {
@Qualifier("redisTemplate") //Spring Boot自动配置会自动生成一个StringRedisTemplate。我们指定自己编写的RedisTemplate。
@Autowired
RedisTemplate<String, String> redisTemplate;
@Test
public void testRedis(){
redisTemplate.opsForValue().set("zzx_test", "hello redis");
Assert.assertEquals("hello redis", redisTemplate.opsForValue().get("zzx_test"));
}
}
5. 完成
最后测试成功,我们可以愉快的使用Redis了^_^