JAVA中的Live對象是什么?
Java是一種面向對象的編程語言,這意味著在Java中幾乎沒有比對象更重要的概念了。Java中的對象的強大功能分布式對象,使您能夠跨多個進程或計算機構建分布式系統。
在Java中,活動對象(也稱為活動分布式對象)是標準對象的“增強”版本。對于活動對象,實例引用不僅可以在Java虛擬機線程,但在不同機器上的不同JVM之間也是如此。
redis是一種開放源碼的內存數據結構存儲,通常用于構建分布式NoSQL鍵值數據庫。要在Redis中使用Java對象,開發人員可以使用RedisJava客戶端,例如雷迪森.
在本文中,我們將討論Redisson如何處理Java對象的主題,以及如何使用Redisson在Redis中搜索Java對象。
Redisson Live Objects(RLO)
RedissonLiveObjects(RLO)是REDIS活動對象概念的重新實現。對于rlo,Java類中的所有字段都映射到紅花散列。此映射由運行時構造的代理類完成。
更具體地說,Java類中每個字段的get/set方法被轉換為Redis散列中的hget/hset方法。這使得連接到Redis服務器的任何客戶端都可以訪問RLO。
使用RLO,在多個應用程序和服務器之間共享對象就像在單個應用程序中共享對象一樣容易。通過消除處理序列化和反序列化的需要,RLO極大地簡化了分布式編程的過程。
用Redisson在Redis中搜索Java對象
下面是如何使用Redisson創建JavaLiveObject的示例。使用活動對象需要使用@REntity和@RID注釋。
@REntity2 public class MyObject {3 4 @RId 5 private String id;67 @RIndex8 private String field1;910 @RIndex11 private Integer field2;12 13 @RIndex14 private Long field3; 15
一旦您創建了一個rlo并將其存儲在Redis中,您還可以使用Redisson搜索它。現有的搜索條件包括:
- Conditions.eq:“等于”條件將屬性限制為已定義的值。
- 條件.和:“和”條件用于嵌套條件的集合。
- 條件。或:嵌套條件集合的“OR”條件。
- 條件.在:“IN”條件將屬性限制為一組已定義的值。
- 條件:“大于”條件將屬性限制為已定義的值。
- 條件通用:“大于或等于”條件將屬性限制為定義的值。
- 條件:將屬性限制為定義值的“小于”條件。
- 條件:“小于或等于”條件將屬性限制為定義的值。
下面是如何在Redisson中搜索Java活動對象的示例。此示例搜索將發現字段1=value和field 2<12的所有對象,或field 1=value和field 2>23的對象,或字段3位于[1,2]范圍內的對象。
RLiveObjectService liveObjectService = redisson.getLiveObjectService();2 liveObjectService.persist(new MyObject());34 Collection<MyObject> objects = liveObjectService.find(MyObject.class, 5 Conditions.or(Conditions.and(Conditions.eq("field1", "value"), Conditions.lt("field2", 12)), 6 Conditions.and(Conditions.eq("field1", "value2"), Conditions.gt("field2", 23)), Conditions.in("field3", 1L, 2L));
Redissonpro為Java對象實現了一個Redis搜索引擎,比開源版本快10倍,這一切都降低了JVM內存消耗。若要了解更多關于redisson pro的特性(包括附加功能、更高性能和24x7技術支持),請參閱Redisson pro網站