前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >重磅官宣:Redis OM 发布,Redis 对象映射框架来了!!

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

作者头像
Java技术栈
发布2021-12-02 11:46:29
9920
发布2021-12-02 11:46:29
举报
文章被收录于专栏:Java技术栈

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 依赖:

代码语言:javascript
复制
<dependency>
  <groupId>com.redis.om.spring</groupId>
  <artifactId>redis-om-spring</artifactId>
  <version>${version}</version>
</dependency>

Spring Boot 配置:

代码语言:javascript
复制
@SpringBootApplication
@Configuration
@EnableRedisDocumentRepositories(basePackages = "cn.javastack.documents.*")
public class RdsDocumentsApplication {

  public static void main(String[] args) {
      SpringApplication.run(RdsDocumentsApplication.class, args);
  }
  
}

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

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

对象模型映射

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

代码语言:javascript
复制
/**
 * 商户操作仓库
 * 作者:栈长
 * 来源公众号:Java技术栈
 */
@Data
@RequiredArgsConstructor(staticName = "of")
@AllArgsConstructor(access = AccessLevel.PROTECTED)
@Document
public class Merchant {

  @Id 
  private String id;
  
  @Searchable 
  private String name;
  
  @Indexed 
  private Point location;
  
  @Indexed 
  private Set<String> sites = new HashSet<String>();
  
  @Indexed 
  private Integer numberOfEmployees;
  
  @Indexed 
  private Integer yearFounded;
  
  private String url;
  
  private boolean publiclyListed;

  // ...
}

注解说明:

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

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

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

代码语言:javascript
复制
/**
 * 商户操作仓库
 * 作者:栈长
 * 来源公众号:Java技术栈
 */
public interface MerchantRepository extends RedisDocumentRepository<Merchant, String> {

  // 查找单个商户
  Optional<Merchant> findMerchantByName(String name);
  
}
使用仓库

先注入 MerchantRepo 仓库:

代码语言:javascript
复制
@Autowired
MerchantRepository merchantRepo;

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

数据持久化:
代码语言:javascript
复制
/**
 * 持久化数据
 * 作者:栈长
 * 来源公众号:Java技术栈
 */
@Bean
CommandLineRunner initData() {
    return args -> {
      // 清空数据
      merchantRepo.deleteAll();
      
      Merchant javastack1 = Merchant.of(
        "javastack1", "https://javastack.cn", new Point(-122.066540, 37.377690), 526, 2011 //
      );
      javastack1.setTags(Set.of("fast", "scalable", "reliable"));

      Merchant javastack2 = Merchant.of(
        "javastack2", "https://javastack.cn", new Point(-122.124500, 47.640160), 182268, 1975 //
      );
      javastack2.setTags(Set.of("innovative", "reliable"));
      
      // 持久化数据
      merchantRepo.save(javastack1);
      merchantRepo.save(javastack2);
    };
}

数据查询:

代码语言:javascript
复制
/**
 * 查找单个商户
 * 作者:栈长
 * 来源公众号:Java技术栈
 */
@GetMapping("name/{name}")
Optional<Merchant> byName(@PathVariable("name") String name) {
    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

最后,你觉得 Redis OM 怎么样?欢迎留言讨论!

版权声明: 本文系公众号 "Java技术栈" 原创,原创实属不易,转载、引用本文内容请注明出处,抄袭者一律举报+投诉,并保留追究其法律责任的权利。

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

本文分享自 Java技术栈 微信公众号,前往查看

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

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

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