如何搜索存储在Redis中的Java对象

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创建JavaLiveObject的示例。使用活动对象需要使用@REntity和@RID注释。

@REntity
2 public class MyObject {
3
4 @RId
5 private String id;
6
7 @RIndex
8 private String field1;
9
10 @RIndex
11 private Integer field2;
12
13 @RIndex
14 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());
3
4 Collection 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网站.

发布了849 篇原创文章 · 获赞 108 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/qf2019/article/details/104769128