gpt4 book ai didi

data-structures - Redis - 排序字典

转载 作者:可可西里 更新时间:2023-11-01 11:12:50 26 4
gpt4 key购买 nike

Redis 具有数据结构排序集,它允许您创建一个按某个分数值排序的集。

我正在努力解决几个问题

  1. 我需要存储相似但分数不同的成员(集合不可能)。一种解决方案是将分数与原始值连接起来并将其存储为值,但这有点难看。

  2. 我需要每个分数只有一个成员,我需要一种方法来执行它。

  3. 我需要能够按分数更新或删除成员,就像在字典中一样。

我正在寻找的最好的例子是订单簿我需要能够设置特定价格的数量、删除价格并检索按价格排序的数量和价格

SET orderBook_buy 1.17 30000
SET orderBook_buy 1.18 40000
SET orderBook_buy 1.19 40000
SET orderBook_buy 1.17 35000 // Override the previous value of 1.17
DEL orderBook_buy 1.18 // 1.18 was sold out

我认为如果我结合排序集和哈希表就可以做到

我将价格保存在有序集合中

ZADD orderBook_buy_prices 1.17 1.17
...
ZREM orderBook_buy_prices 1.18

以及哈希表中的金额,按价格

HSET orderBook_buy 1.17 35000
...
HDEL orderBook_buy 1.17

它可以工作,但我每次都必须执行 2 次读取和 2 次写入,并且还要确保写入在事务内。

redid 中是否有支持开箱即用的排序字典的数据结构(可能是一个模块)?

谢谢。

最佳答案

It could work but i have to do 2 reads and 2 writes every time, and also make sure that the writes are inside a transaction.

您还想在事务中进行读取,除非您不关心可能的读取一致性问题。

Is there a data structure in redid that support sorted dictionaries out of the box (Could be a module)?

Sorted Sets 就是这样,但您正在寻找的是一种单一的数据结构,它是一种带有排序的双向字典(尽管仅在键/值的一个子集上<-取决于您的方向来自)。

您将两个现有结构“焊接”在一起的方法是完全有效的,您指出了有关两个键和事务性的限制。您可以使用 Lua 脚本来包装逻辑而不用担心事务,但您仍然需要通过两个操作让它触摸 2 个键。

据我所知,没有实现此数据结构的 Redis 模块 ATM(尽管应该可以编写一个)。

关于data-structures - Redis - 排序字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48931573/

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