gpt4 book ai didi

redis - Redis:如何计算已排序列表时间序列中的时间差?

转载 作者:行者123 更新时间:2023-12-03 06:42:44 27 4
gpt4 key购买 nike

我正在尝试计算Redis中存储的消息之间的响应时间。但是我不知道该怎么做。

首先,我必须像这样存储chat_messages的时间流

ZADD conversation:CONVERSATION_ID:chat_messages TIMESTAMP CHAT_MESSAGE_ID
ZADD conversation:9:chat_messages 1511533205001 2583
ZADD conversation:9:chat_messages 1511533207057 732016

之后,我需要该应用程序能够使用Redis计算时间戳之间的时间差,因为我需要没有其他(可能更慢)技术的额外速度。

有没有一种方法可以使用普通的Redis或Lua来实现?

最佳答案

您正在使用的时间戳似乎以毫秒为单位,因此您只需减去并转换为所需的单位。

您可以使用 ZSCORE 获得每条消息的分数。或使用ZRANGE方法之一一次获取多条消息: ZRANGEBYSCORE ... WITHSCORES

您可以使用Lua脚本来获取时差:

local t1 = redis.call('ZSCORE', KEYS[1], ARGV[1])
local t2 = redis.call('ZSCORE', KEYS[1], ARGV[2])
return tonumber(t2) - tonumber(t1)

这里是完整的EVAL命令:
EVAL "local t1 = redis.call('ZSCORE', KEYS[1], ARGV[1]) local t2 = redis.call('ZSCORE', KEYS[1], ARGV[2]) return tonumber(t2) - tonumber(t1)" 1 conversation:9:chat_messages 2583 732016

关于redis - Redis:如何计算已排序列表时间序列中的时间差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59828521/

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