gpt4 book ai didi

redis - Redis中的多参数匹配+加权随机pick

转载 作者:可可西里 更新时间:2023-11-01 11:03:15 29 4
gpt4 key购买 nike

假设我有一组具有属性的对象:

Object Quantity Color  Shape   Kind----------------------------------------APPLE  12       RED    ROUND   FRUITAPPLE  3        GREEN  ROUND   FRUITORANGE 6        ORANGE ROUND   FRUITCARROT 0        RED    CONICAL VEGETABLERADISH 24       RED    ROUND   VEGETABLE

对象和除数量以外的所有属性都表示为字符串。数量是一个数字。

我必须根据用户的查询组成一个随机的对象列表。

查询包含所有字符串属性的值(即,除数量之外的所有属性)。

查询中的值可以是确切的属性值,或通配符(意思是“任何值都适用于此属性”),或否定 - “不是这个确切的属性值”。

查询结果是一个对象,通过加权随机从所有具有匹配属性的对象中挑选出来。随机抽取的重量是数量。

例如:

Query                    -> Probabilities                    -> Example                                                                 random result-----------------------------------------------------------------------------*      ROUND   FRUIT     -> APPLE 12 / APPLE 3 = APPLE 15    -> APPLE!GREEN ROUND   FRUIT     -> APPLE 12 / ORANGE 6              -> ORANGERED    *       *         -> CARROT 0 / APPLE 12 / RADISH 24                           = APPLE 12 / RADISH 24             -> RADISHRED    CONICAL VEGETABLE -> CARROT 0                           = (none)                           -> (none)

出于自学目的,我想使用 Redis 构建这个系统来进行数据存储。

问题是 — 如何以最少的应用程序逻辑优雅地完成此操作(与 Redis 内操作相反)?权重和否定会破坏画面。否则它将是 nicely doable with sets .

欢迎任何提示。

最佳答案

由于 Redis 只能查询键而不能查询值,因此一个不错的选择是将每个对象的各个值存储在单独的 Redis 列表中。

例如,当您添加对象时...

苹果 12 红色圆形水果

你会把它存储为

hmset obj:1 name apple quty 12 color red shape round kind fruit

然后……

悲伤的名字:苹果对象:1,

悲伤的颜色:红色 obj:1

悲伤形状:圆形 obj:1

这样您就可以直接查询集合并能够使用随机数选择对象,例如,基于返回的集合中的项目总数。

希望对您有所帮助。如果您需要更多解释,请联系我。

关于redis - Redis中的多参数匹配+加权随机pick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7942362/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com