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 依赖:
<dependency> <groupId>com.redis.om.spring</groupId> <artifactId>redis-om-spring</artifactId> <version>${version}</version></dependency>
Spring Boot 配置:
@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...
对象模型映射
Redis OM 也是通过注解的形式映射对象模型,如上面示例:
/** * 商户操作仓库 * 作者:栈长 * 起源公众号:Java技术栈 */@Data@RequiredArgsConstructor(staticName = "of")@AllArgsConstructor(access = AccessLevel.PROTECTED)@Documentpublic 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 就行了:
/** * 商户操作仓库 * 作者:栈长 * 起源公众号:Java技术栈 */public interface MerchantRepository extends RedisDocumentRepository<Merchant, String> { // 查找单个商户 Optional<Merchant> findMerchantByName(String name); }
应用仓库
先注入 MerchantRepo 仓库:
@AutowiredMerchantRepository merchantRepo;
而后就能够长久化数据和查问操作了。
数据长久化:
/** * 长久化数据 * 作者:栈长 * 起源公众号:Java技术栈 */@BeanCommandLineRunner 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); };}
数据查问:
/** * 查找单个商户 * 作者:栈长 * 起源公众号: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/introd...
https://github.com/redis/redi...
好了,明天的分享就到这里了,前面栈长会分享更多好玩的 Java 技术和最新的技术资讯,关注公众号Java技术栈第一工夫推送,我也将支流 Java 面试题和参考答案都整顿好了,在公众号后盾回复关键字 "面试" 进行刷题。
最初,你感觉 Redis OM 怎么样?欢送留言探讨!
这真是个好框架,欢送转发、分享给更多 Javaer 小伙伴们吧!
版权申明: 本文系公众号 "Java技术栈" 原创,原创实属不易,转载、援用本文内容请注明出处,剽窃者一律举报+投诉,并保留追究其法律责任的权力。
近期热文举荐:
1.1,000+ 道 Java面试题及答案整顿(2021最新版)
2.别在再满屏的 if/ else 了,试试策略模式,真香!!
3.卧槽!Java 中的 xx ≠ null 是什么新语法?
4.Spring Boot 2.6 正式公布,一大波新个性。。
5.《Java开发手册(嵩山版)》最新公布,速速下载!
感觉不错,别忘了顺手点赞+转发哦!