Redis 官方博客宣布推出四个用于 Redis 的客户端 工具 库,官方将这些工具库称为 Redis OM(对象映射库,Object Mapping),目标是让应用程序尽可能地容易使用 Redis 和 Redis 模块。
目前四个工具库分别对应了四种编程语言,支持 .NET、Node.js、 Python 和 Java (Spring):
- Redis OM for .NET:支持使用 LINQ 查询 Redis 域对象
- Redis OM for Node.js:使用 TypeScript 编写,为 TypeScript 和 JavaScript 提供一级支持
- Redis OM for Python:原生集成流行的 FastAPI 框架,将 FastAPI 与 Redis 结合可构建高性能 Web 服务。Redis OM Python 库还支持同步和异步使用
- Redis OM for Spring:原生集成 Spring,扩展了 Spring Data Redis(提供熟悉的界面),甚至添加了对 RedisBloo 的部分支持
据介绍,开发者通过 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()
这些查询的优势在于它们会被索引,因此默认情况下非常高效。查看最近的基准测试博客,以了解性能优势。
猜你喜欢: