重磅官宣:Redis OM 发布,Redis 对象映射框架来了!

存储 存储软件 Redis
Redis OM 支持的第一个抽象就是:对象映射,支持基于对象的 Redis 数据持久化、流式查询操作。

[[437245]]

Redis OM

前几天,Redis 发布了对象映射框架:Redis OM,即:Object Mapping,不过目前它还是预览版。

当然,Redis OM 的横空出世不仅仅是对象映射,它更多的是提供一个高级的抽象类库,目标就是让开发人员更简单、方便的使用 Redis 数据。

Redis OM 支持的第一个抽象就是:对象映射,支持基于对象的 Redis 数据持久化、流式查询操作。

目前只支持 4 种开发语言:

  • Redis OM for Spring(Java)
  • Redis OM for .NET
  • Redis OM for Node.js
  • Redis OM for Python

相信后续会支持更多语言。

Redis OM for Spring

Redis OM for Spring 是对咱们 Java 的支持的对象映射类库。

栈长看了官方仓库源码说明,它其实就是扩展了 Spring Data Redis,可以提供更好的数据搜索、文档模型等,可以理解为 MyBatis-plus 和 MyBatis 的关系,相辅相成的。

快速开始

Redis OM 可以和 Spring Boot 快速集成。

Maven 依赖:

  1. <dependency> 
  2.   <groupId>com.redis.om.spring</groupId> 
  3.   <artifactId>redis-om-spring</artifactId> 
  4.   <version>${version}</version> 
  5. </dependency> 

 

Spring Boot 配置:

  1. @SpringBootApplication 
  2. @Configuration 
  3. @EnableRedisDocumentRepositories(basePackages = "cn.javastack.documents.*"
  4. public class RdsDocumentsApplication { 
  5.  
  6.   public static void main(String[] args) { 
  7.       SpringApplication.run(RdsDocumentsApplication.class, args); 
  8.   } 
  9.    

使用 @EnableRedisDocumentRepositories 注释扫描 @Document 注解的 Spring 模型,通过注入实现 RedisDocumentRepository 的 repositories bean,后面就可以进行 CRUD 和自定义查询操作了。

Spring Boot 基础就不介绍了,学习笔记分享给你,实战仓库源码:https://github.com/javastacks/spring-boot-best-practice

对象模型映射

Redis OM 也是通过注解的方式映射对象模型,如下面示例:

  1. /** 
  2.  * 商户操作仓库 
  3.  * 作者:栈长 
  4.  * 来源公众号:Java技术栈 
  5.  */ 
  6. @Data 
  7. @RequiredArgsConstructor(staticName = "of"
  8. @AllArgsConstructor(access = AccessLevel.PROTECTED) 
  9. @Document 
  10. public class Merchant { 
  11.  
  12.   @Id  
  13.   private String id; 
  14.    
  15.   @Searchable  
  16.   private String name
  17.    
  18.   @Indexed  
  19.   private Point location; 
  20.    
  21.   @Indexed  
  22.   private Set<String> sites = new HashSet<String>(); 
  23.    
  24.   @Indexed  
  25.   private Integer numberOfEmployees; 
  26.    
  27.   @Indexed  
  28.   private Integer yearFounded; 
  29.    
  30.   private String url; 
  31.    
  32.   private boolean publiclyListed; 
  33.  
  34.   // ... 

注解说明:

  • @Document: 将 Spring Data 模型映射到 Redis JSON 文档;
  • @Id: 使用 ULID 取代传统的 UUID 主键生成策略,生成速度更快、更易用;
  • @Searchable: 声明全文搜索索引;
  • @Indexable: 声明索引;

定义仓库

Spring Data Redis 这里就不详细介绍了,栈长之前写过一些,不会用的可以关注公众号:Java技术栈,在公众号菜单栏中阅读,栈长都已经整理好了。

使用 Repository 仓库也很简单,继承 RedisDocumentRepository 就行了:

  1. /** 
  2.  * 商户操作仓库 
  3.  * 作者:栈长 
  4.  * 来源公众号:Java技术栈 
  5.  */ 
  6. public interface MerchantRepository extends RedisDocumentRepository<Merchant, String> { 
  7.  
  8.   // 查找单个商户 
  9.   Optional<Merchant> findMerchantByName(String name); 
  10.    

使用仓库

先注入 MerchantRepo 仓库:

  1. @Autowired 
  2.  
  3. MerchantRepository merchantRepo; 

然后就可以持久化数据和查询操作了。

数据持久化:

  1. /** 
  2.  * 持久化数据 
  3.  * 作者:栈长 
  4.  * 来源公众号:Java技术栈 
  5.  */ 
  6. @Bean 
  7. CommandLineRunner initData() { 
  8.     return args -> { 
  9.       // 清空数据 
  10.       merchantRepo.deleteAll(); 
  11.        
  12.       Merchant javastack1 = Merchant.of
  13.         "javastack1""https://javastack.cn", new Point(-122.066540, 37.377690), 526, 2011 // 
  14.       ); 
  15.       javastack1.setTags(Set.of("fast""scalable""reliable")); 
  16.  
  17.       Merchant javastack2 = Merchant.of
  18.         "javastack2""https://javastack.cn", new Point(-122.124500, 47.640160), 182268, 1975 // 
  19.       ); 
  20.       javastack2.setTags(Set.of("innovative""reliable")); 
  21.        
  22.       // 持久化数据 
  23.       merchantRepo.save(javastack1); 
  24.       merchantRepo.save(javastack2); 
  25.     }; 

数据查询:

  1. /** 
  2.  * 查找单个商户 
  3.  * 作者:栈长 
  4.  * 来源公众号:Java技术栈 
  5.  */ 
  6. @GetMapping("name/{name}"
  7. Optional<Merchant> byName(@PathVariable("name") String name) { 
  8.     return merchantRepo.findMerchantByName(name); 

Redis OM 全程都是通过对象的方式,更好的面向对象编程的思想,不需要多余的对象转换操作了。

总结

Redis OM 对象映射只是扩展了 Spring Data Redis,它不能脱离 Spring Data Redis,更不能脱离其他 Redis 客户端,它只是一个更高层级的抽象库而已,可以使我们更简单、方便的使用 Redis。

可以简单的说它是 Redis 界的 Hibernate,真香!

现在还是预览版,功能也不全,我们还是期待它的正式发布吧,栈长会第一时间跟进和体验分享。

更多的细节可以参考:

https://redis.com/blog/introducing-redis-om-client-libraries/

https://github.com/redis/redis-om-spring

好了,今天的分享就到这里了,后面栈长会分享更多好玩的 Java 技术和最新的技术资讯,关注公众号Java技术栈第一时间推送,我也将主流 Java 面试题和参考答案都整理好了,在公众号后台回复关键字 "面试" 进行刷题。

本文转载自微信公众号「Java技术栈」,可以通过以下二维码关注。转载本文请联系Java技术栈公众号。

 

责任编辑:武晓燕 来源: Java技术栈
相关推荐

2019-11-15 17:55:04

华为

2022-04-06 21:51:55

iOSiOS 16发布会

2022-04-25 10:34:19

云原生直播

2016-12-09 08:51:18

GoogleDevelopers网站

2021-01-21 17:07:56

神州云

2023-08-15 10:06:03

2018-04-28 09:45:01

微软Windows 10更新

2020-12-25 14:55:13

VS Code代码编程

2024-01-10 08:16:08

Redis集成JMS

2024-01-04 07:50:59

2023-08-31 22:50:12

微软开发

2020-09-09 12:47:23

Android 11ColorOS 11OPPO

2021-11-02 09:05:25

Redis

2021-02-22 06:41:35

对象AutoMapper映射

2021-06-04 05:36:07

Windows10操作系统微软

2021-12-15 18:35:49

戴尔

2018-11-15 11:17:46

智慧城市
点赞
收藏

51CTO技术栈公众号