前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Data Redis简介

Spring Data Redis简介

作者头像
叔牙
发布2020-11-19 17:42:31
7910
发布2020-11-19 17:42:31
举报

Spring Data Redis简介

点击「蓝色微信名」可快速关注

1

概述

本篇文章将介绍Spring Data Redis,它提供了Spring Data平台对Redis的抽象,Redis是流行的内存数据结构存储。

Redis由基于key存储驱动的数据结构,以持久化数据,并可用作数据库,缓存,消息代理等。

我们能够使用Spring Data的常用模式(模板等),同时还具有所有Spring Data项目的传统简单性。

2

Maven依赖管理

首先在pom.xml中声明Spring Data Redis依赖项:

  1. <dependency>
  2. <groupId>org.springframework.data</groupId>
  3. <artifactId>spring-data-redis</artifactId>
  4. <version>2.0.3.RELEASE</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>redis.clients</groupId>
  8. <artifactId>jedis</artifactId>
  9. <version>2.9.0</version>
  10. <type>jar</type>
  11. </dependency>

3

Redis配置

要定义应用程序客户端和Redis服务器实例之间的连接设置,我们需要使用Redis客户端。

有许多可用于Java的Redis客户端实现。 在本教程中,我们将使用Jedis-一个简单而强大的Redis客户端实现。

框架中对XML和Java配置都有很好的支持; 对于本篇文章,我们将使用基于Java的配置。

3.1:Java配置

从配置bean定义开始:

  1. @Bean
  2. JedisConnectionFactory jedisConnectionFactory() {
  3. return new JedisConnectionFactory();
  4. }
  5. @Bean
  6. public RedisTemplate<String, Object> redisTemplate() {
  7. RedisTemplate<String, Object> template = new RedisTemplate<>();
  8. template.setConnectionFactory(jedisConnectionFactory());
  9. return template;
  10. }

配置非常简单。 首先,使用Jedis客户端,我们定义了一个connectionFactory。

然后,我们使用jedisConnectionFactory定义了一个RedisTemplate。这可用于使用自定义存储库查询数据。

3.2:自定义连接属性

你可能已经注意到上述配置中缺少通常的与连接相关的属性。 例如,配置中缺少服务器地址和端口,原因很简单:对于上述示例,我们使用默认值。

但是,如果我们需要配置连接细节,我们总是可以修改jedisConnectionFactory配置,如下所示:

  1. @Bean
  2. JedisConnectionFactory jedisConnectionFactory() {
  3. JedisConnectionFactory jedisConFactory
  4. = new JedisConnectionFactory();
  5. jedisConFactory.setHostName("localhost");
  6. jedisConFactory.setPort(6379);
  7. return jedisConFactory;
  8. }

4

Redis存储库

使用Student实体作为示例:

  1. @RedisHash("Student")
  2. public class Student implements Serializable {
  3. public enum Gender {
  4. MALE, FEMALE
  5. }
  6. private String id;
  7. private String name;
  8. private Gender gender;
  9. private int grade;
  10. // ...
  11. }

4.1:Spring Data Repository

现在创建StudentRepository,如下所示:

  1. @Repository
  2. public interface StudentRepository extends CrudRepository<Student, String> {}

5

使用StudentRepository进行数据访问

通过在StudentRepository中继承CrudRepository,我们自动获得一组执行CRUD功能的完整持久化方法。

5.1:保存学生对象

在数据存储中保存一个新的Student对象:

  1. Student student = new Student(
  2. "Eng2015001", "John Doe", Student.Gender.MALE, 1);
  3. studentRepository.save(student);

5.2:检索现有学生对象

我们可以通过获取Student数据来验证在上一部分中的正确插入:

  1. Student retrievedStudent =
  2. studentRepository.findById("Eng2015001").get();

5.3:更新学生数据

更改上面检索的学生的姓名并再次保存:

  1. retrievedStudent.setName("Richard Watson");
  2. studentRepository.save(student);

最后,我们可以再次检索学生的数据,并验证数据存储中的名称是否已更新。

5.4:删除学生数据

我们可以删除上面保存的学生数据:

studentRepository.deleteById(student.getId());

现在我们可以搜索student对象并验证结果是否为null。

5.5:查找所有学生数据

插入一些学生对象:

  1. Student engStudent = new Student(
  2. "Eng2015001", "John Doe", Student.Gender.MALE, 1);
  3. Student medStudent = new Student(
  4. "Med2015001", "Gareth Houston", Student.Gender.MALE, 2);
  5. studentRepository.save(engStudent);
  6. studentRepository.save(medStudent);

我们也可以通过插入一个集合来实现这一点。有一个不同的方法-saveAll(), 它接收一个包含我们想要持久化的多个学生对象的Iterable对象。

要查找所有插入的学生,我们可以使用findAll()方法:

  1. List<Student> students = new ArrayList<>();
  2. studentRepository.findAll().forEach(students::add);

然后,我们可以通过检查每个对象的属性来检查学生列表信息。

总结

在本篇文章中,我们了解了Spring Data Redis的基本使用方式。当然Spring使用Redis的方式有很多种,比如手动直接操作Jedis或者使用RedisTemplate等等,具体使用哪一种,需要视具体场景和使用习惯而定。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PersistentCoder 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档