You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redis OM Python:如何基于模型字段声明式自定义主键?

自定义Redis OM模型主键的声明式方法

Redis OM确实支持声明式指定字段作为主键,不需要仅依赖命名为pk的字段或自定义生成函数,以下是具体实现方式:

1. 单字段直接标记为主键

在定义模型时,给目标字段添加primary_key=True参数(以Redis OM for Python为例),即可直接将该字段设为主键,替代默认的ULID生成逻辑:

from redis_om import HashModel, Field

class User(HashModel):
    # 将email字段声明为主键
    email: str = Field(primary_key=True)
    name: str
    age: int

创建实例时,只需给email赋值,Redis OM会自动用该值作为实例的主键存储,无需额外处理:

user = User(email="user@example.com", name="Alice", age=30)
user.save()
# 主键即为"user@example.com"

2. 多字段组合生成主键

如果需要基于多个字段的组合生成主键,可以通过定义pk计算属性的方式实现,这也是一种声明式的写法:

from redis_om import HashModel, Field

class Order(HashModel):
    user_id: str
    order_number: str
    
    # 基于user_id和order_number组合生成主键
    @property
    def pk(self):
        return f"{self.user_id}:{self.order_number}"

这种方式下,Redis OM会自动识别pk属性作为实例的主键,存储时直接使用该组合值,无需手动指定。

3. 关键注意事项

  • 指定为主键的字段/属性必须保证唯一且非空,否则会触发主键冲突错误;
  • 如果同时定义了pk字段和标记primary_key=True的字段,Redis OM会优先使用后者;
  • 不同语言的Redis OM实现语法略有差异(比如Java版使用@RedisId注解),但核心逻辑一致:通过字段属性或注解声明主键。

内容的提问来源于stack exchange,提问作者AmitGK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 19:27:32