自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

重磅官宣:Redis OM 發(fā)布,Redis 對(duì)象映射框架來(lái)了!

存儲(chǔ) 存儲(chǔ)軟件 Redis
Redis OM 支持的第一個(gè)抽象就是:對(duì)象映射,支持基于對(duì)象的 Redis 數(shù)據(jù)持久化、流式查詢操作。

[[437245]]

Redis OM

前幾天,Redis 發(fā)布了對(duì)象映射框架:Redis OM,即:Object Mapping,不過(guò)目前它還是預(yù)覽版。

當(dāng)然,Redis OM 的橫空出世不僅僅是對(duì)象映射,它更多的是提供一個(gè)高級(jí)的抽象類庫(kù),目標(biāo)就是讓開發(fā)人員更簡(jiǎn)單、方便的使用 Redis 數(shù)據(jù)。

Redis OM 支持的第一個(gè)抽象就是:對(duì)象映射,支持基于對(duì)象的 Redis 數(shù)據(jù)持久化、流式查詢操作。

目前只支持 4 種開發(fā)語(yǔ)言:

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

相信后續(xù)會(huì)支持更多語(yǔ)言。

Redis OM for Spring

Redis OM for Spring 是對(duì)咱們 Java 的支持的對(duì)象映射類庫(kù)。

棧長(zhǎng)看了官方倉(cāng)庫(kù)源碼說(shuō)明,它其實(shí)就是擴(kuò)展了 Spring Data Redis,可以提供更好的數(shù)據(jù)搜索、文檔模型等,可以理解為 MyBatis-plus 和 MyBatis 的關(guān)系,相輔相成的。

快速開始

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 模型,通過(guò)注入實(shí)現(xiàn) RedisDocumentRepository 的 repositories bean,后面就可以進(jìn)行 CRUD 和自定義查詢操作了。

Spring Boot 基礎(chǔ)就不介紹了,學(xué)習(xí)筆記分享給你,實(shí)戰(zhàn)倉(cāng)庫(kù)源碼:https://github.com/javastacks/spring-boot-best-practice

對(duì)象模型映射

Redis OM 也是通過(guò)注解的方式映射對(duì)象模型,如下面示例:

  1. /** 
  2.  * 商戶操作倉(cāng)庫(kù) 
  3.  * 作者:棧長(zhǎng) 
  4.  * 來(lái)源公眾號(hào):Java技術(shù)棧 
  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.   // ... 

注解說(shuō)明:

  • @Document: 將 Spring Data 模型映射到 Redis JSON 文檔;
  • @Id: 使用 ULID 取代傳統(tǒng)的 UUID 主鍵生成策略,生成速度更快、更易用;
  • @Searchable: 聲明全文搜索索引;
  • @Indexable: 聲明索引;

定義倉(cāng)庫(kù)

Spring Data Redis 這里就不詳細(xì)介紹了,棧長(zhǎng)之前寫過(guò)一些,不會(huì)用的可以關(guān)注公眾號(hào):Java技術(shù)棧,在公眾號(hào)菜單欄中閱讀,棧長(zhǎng)都已經(jīng)整理好了。

使用 Repository 倉(cāng)庫(kù)也很簡(jiǎn)單,繼承 RedisDocumentRepository 就行了:

  1. /** 
  2.  * 商戶操作倉(cāng)庫(kù) 
  3.  * 作者:棧長(zhǎng) 
  4.  * 來(lái)源公眾號(hào):Java技術(shù)棧 
  5.  */ 
  6. public interface MerchantRepository extends RedisDocumentRepository<Merchant, String> { 
  7.  
  8.   // 查找單個(gè)商戶 
  9.   Optional<Merchant> findMerchantByName(String name); 
  10.    

使用倉(cāng)庫(kù)

先注入 MerchantRepo 倉(cāng)庫(kù):

  1. @Autowired 
  2.  
  3. MerchantRepository merchantRepo; 

然后就可以持久化數(shù)據(jù)和查詢操作了。

數(shù)據(jù)持久化:

  1. /** 
  2.  * 持久化數(shù)據(jù) 
  3.  * 作者:棧長(zhǎng) 
  4.  * 來(lái)源公眾號(hào):Java技術(shù)棧 
  5.  */ 
  6. @Bean 
  7. CommandLineRunner initData() { 
  8.     return args -> { 
  9.       // 清空數(shù)據(jù) 
  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.       // 持久化數(shù)據(jù) 
  23.       merchantRepo.save(javastack1); 
  24.       merchantRepo.save(javastack2); 
  25.     }; 

數(shù)據(jù)查詢:

  1. /** 
  2.  * 查找單個(gè)商戶 
  3.  * 作者:棧長(zhǎng) 
  4.  * 來(lái)源公眾號(hào):Java技術(shù)棧 
  5.  */ 
  6. @GetMapping("name/{name}"
  7. Optional<Merchant> byName(@PathVariable("name") String name) { 
  8.     return merchantRepo.findMerchantByName(name); 

Redis OM 全程都是通過(guò)對(duì)象的方式,更好的面向?qū)ο缶幊痰乃枷?,不需要多余的?duì)象轉(zhuǎn)換操作了。

總結(jié)

Redis OM 對(duì)象映射只是擴(kuò)展了 Spring Data Redis,它不能脫離 Spring Data Redis,更不能脫離其他 Redis 客戶端,它只是一個(gè)更高層級(jí)的抽象庫(kù)而已,可以使我們更簡(jiǎn)單、方便的使用 Redis。

可以簡(jiǎn)單的說(shuō)它是 Redis 界的 Hibernate,真香!

現(xiàn)在還是預(yù)覽版,功能也不全,我們還是期待它的正式發(fā)布吧,棧長(zhǎng)會(huì)第一時(shí)間跟進(jìn)和體驗(yàn)分享。

更多的細(xì)節(jié)可以參考:

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

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

好了,今天的分享就到這里了,后面棧長(zhǎng)會(huì)分享更多好玩的 Java 技術(shù)和最新的技術(shù)資訊,關(guān)注公眾號(hào)Java技術(shù)棧第一時(shí)間推送,我也將主流 Java 面試題和參考答案都整理好了,在公眾號(hào)后臺(tái)回復(fù)關(guān)鍵字 "面試" 進(jìn)行刷題。

本文轉(zhuǎn)載自微信公眾號(hào)「Java技術(shù)棧」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系Java技術(shù)棧公眾號(hào)。

 

責(zé)任編輯:武曉燕 來(lái)源: Java技術(shù)棧
相關(guān)推薦

2019-11-15 17:55:04

華為

2025-02-21 15:18:20

2022-04-06 21:51:55

iOSiOS 16發(fā)布會(huì)

2024-05-08 14:12:40

Redis軟件開源

2022-04-25 10:34:19

云原生直播

2016-12-09 08:51:18

GoogleDevelopers網(wǎng)站

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

2023-08-31 22:50:12

微軟開發(fā)

2020-09-09 12:47:23

Android 11ColorOS 11OPPO

2024-04-03 00:00:00

Redis集群代碼

2024-01-04 07:50:59

2021-11-02 09:05:25

Redis
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)