Spring Data Redis简介
点击「蓝色微信名」可快速关注
1
概述
本篇文章将介绍Spring Data Redis,它提供了Spring Data平台对Redis的抽象,Redis是流行的内存数据结构存储。
Redis由基于key存储驱动的数据结构,以持久化数据,并可用作数据库,缓存,消息代理等。
我们能够使用Spring Data的常用模式(模板等),同时还具有所有Spring Data项目的传统简单性。
2
Maven依赖管理
首先在pom.xml中声明Spring Data Redis依赖项:
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>2.0.3.RELEASE</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
<type>jar</type>
</dependency>
3
Redis配置
要定义应用程序客户端和Redis服务器实例之间的连接设置,我们需要使用Redis客户端。
有许多可用于Java的Redis客户端实现。 在本教程中,我们将使用Jedis-一个简单而强大的Redis客户端实现。
框架中对XML和Java配置都有很好的支持; 对于本篇文章,我们将使用基于Java的配置。
3.1:Java配置
从配置bean定义开始:
@Bean
JedisConnectionFactory jedisConnectionFactory()
{
return
new
JedisConnectionFactory();
}
@Bean
public
RedisTemplate<String,
Object> redisTemplate()
{
RedisTemplate<String,
Object> template =
new
RedisTemplate<>();
template.setConnectionFactory(jedisConnectionFactory());
return template;
}
配置非常简单。 首先,使用Jedis客户端,我们定义了一个connectionFactory。
然后,我们使用jedisConnectionFactory定义了一个RedisTemplate。这可用于使用自定义存储库查询数据。
3.2:自定义连接属性
你可能已经注意到上述配置中缺少通常的与连接相关的属性。 例如,配置中缺少服务器地址和端口,原因很简单:对于上述示例,我们使用默认值。
但是,如果我们需要配置连接细节,我们总是可以修改jedisConnectionFactory配置,如下所示:
@Bean
JedisConnectionFactory jedisConnectionFactory()
{
JedisConnectionFactory jedisConFactory
=
new
JedisConnectionFactory();
jedisConFactory.setHostName("localhost");
jedisConFactory.setPort(6379);
return jedisConFactory;
}
4
Redis存储库
使用Student实体作为示例:
@RedisHash("Student")
public
class
Student
implements
Serializable
{
public
enum
Gender
{
MALE, FEMALE
}
private
String id;
private
String name;
private
Gender gender;
private
int grade;
// ...
}
4.1:Spring Data Repository
现在创建StudentRepository,如下所示:
@Repository
public
interface
StudentRepository
extends
CrudRepository<Student,
String>
{}
5
使用StudentRepository进行数据访问
通过在StudentRepository中继承CrudRepository,我们自动获得一组执行CRUD功能的完整持久化方法。
5.1:保存学生对象
在数据存储中保存一个新的Student对象:
Student student =
new
Student(
"Eng2015001",
"John Doe",
Student.Gender.MALE,
1);
studentRepository.save(student);
5.2:检索现有学生对象
我们可以通过获取Student数据来验证在上一部分中的正确插入:
Student retrievedStudent =
studentRepository.findById("Eng2015001").get();
5.3:更新学生数据
更改上面检索的学生的姓名并再次保存:
retrievedStudent.setName("Richard Watson");
studentRepository.save(student);
最后,我们可以再次检索学生的数据,并验证数据存储中的名称是否已更新。
5.4:删除学生数据
我们可以删除上面保存的学生数据:
studentRepository.deleteById(student.getId());
现在我们可以搜索student对象并验证结果是否为null。
5.5:查找所有学生数据
插入一些学生对象:
Student engStudent =
new
Student(
"Eng2015001",
"John Doe",
Student.Gender.MALE,
1);
Student medStudent =
new
Student(
"Med2015001",
"Gareth Houston",
Student.Gender.MALE,
2);
studentRepository.save(engStudent);
studentRepository.save(medStudent);
我们也可以通过插入一个集合来实现这一点。有一个不同的方法-saveAll(), 它接收一个包含我们想要持久化的多个学生对象的Iterable对象。
要查找所有插入的学生,我们可以使用findAll()方法:
List<Student> students =
new
ArrayList<>();
studentRepository.findAll().forEach(students::add);
然后,我们可以通过检查每个对象的属性来检查学生列表信息。
总结
在本篇文章中,我们了解了Spring Data Redis的基本使用方式。当然Spring使用Redis的方式有很多种,比如手动直接操作Jedis或者使用RedisTemplate等等,具体使用哪一种,需要视具体场景和使用习惯而定。
本文分享自 PersistentCoder 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!