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()
这些查询的优势在于它们会被索引,因此默认情况下非常高效。查看最近的基准测试博客,以了解性能优势。
(文/开源中国)