Redis 发布对象映射库 Redis OM

来源: OSCHINA
编辑:
2021-11-26 08:39:04

Redis 官方博客宣布推出四个用于 Redis 的客户端工具库,官方将这些工具库称为 Redis OM(对象映射库,Object Mapping),目标是让应用程序尽可能地容易使用 Redis 和 Redis 模块。

目前四个工具库分别对应了四种编程语言,支持 .NET、Node.js、Python 和 Java (Spring):

据介绍,开发者通过 Redis OM 库可以直观地将域对象 (domain objects) 保存在 Redis,然后使用流畅的、以语言为中心的 API 进行查询。

目前发布的 Redis OM 库是首个预览版,功能方面专注于对象映射和提供流畅的查询。

下面是 Redis OM for Python 的几个例子。

Object Mapping(对象映射)

首先定义一个简单的域对象,在这种情况下,此对象代表一个 customer:

class Customer(HashModel):
    first_name: str
    last_name: str
    email: EmailStr
    join_date: datetime.date
    age: int
    bio: Optional[str]

接着创建新的 Customer 实例:

andrew = Customer(
    first_name="Andrew",
    last_name="Brookins",
    email="andrew.brookins@example.com",
    join_date=datetime.date.today(),
    age=38,
    bio="Python developer, works at Redis, Inc."
)

然后可以通过调用 save() 将这个新的 Customer 实例写入 Redis :

andrew.save()

Redis OM 库会自动为任何新对象生成唯一 ID。当开发者将这些对象保存到 Redis,就可以通过提供其唯一 ID 来进行检索。在 Python 中,可以使用 pk 属性访问唯一的 ID (pk 指的是“主键”)。

Customer.get(andrew.pk)

Querying(查询)

如果将域对象映射到 Redis,RedisJSON(以及通过代理,RediSearch)会为 Redis 提供索引和查询。Redis OM 库利用这些功能为开发者提供对域对象的流畅查询 API。

举一个简单的例子。开发者使用 Redis OM Python 库可以构建流畅的表达式来查询数据。例如,下面是一个检索姓氏为 “Javayant” 或 “Jagoda” 的所有客户的查询:

Customer.find((Customer.last_name == "Javayant") | (Customer.last_name == "Jagoda")).all()

这些查询的优势在于它们会被索引,因此默认情况下非常高效。查看最近的基准测试博客,以了解性能优势。

展开阅读全文
点击加入讨论🔥(5) 发布并加入讨论🔥
5 评论
20 收藏
分享
返回顶部
顶部