问题标签 [redistimeseries]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
redis - 缓存更新时间序列数据
我正在尝试使用redis来缓存270只股票的时间序列数据。每隔 2 或 3 秒,我就会收到一系列刚刚发生的股票变化(交易)。我想将这些数据保存在 redis 中,所以我目前正在尝试考虑最好(也是最有效)的方法。
首先,我考虑在 redis 中有 270 个列表,其中每个列表都是可以更新的股票之一,并且在任何更新时,我都会将对象添加到相应的列表中。这有两个主要问题,假设其中一个更新有 10 种不同的股票刚刚改变,这意味着我必须与 redis 沟通 10 次。另一个问题是检索,如果我想获取所有股票的数据,那么我将不得不与redis通信270次。
另一种方法是只使用一个哈希映射到具有 270 个键的 JSON 对象,并且对象中的每个值都是一个更新数组。
我目前赞成第二种方法,但我想知道是否还有其他我可以做的事情可能比这些方法更好?
azure - 如何在 Azure Cache for Redis 中使用 RedisTimeSeries 模块?
我想在 Azure 的 .net 核心客户端中使用 Redis 中的 RedisTimeSeries 模块(最新功能)。
- 我在 Azure 门户中创建了 Azure Cache for Redis(来自 RedisLabs)(https://azure.microsoft.com/en-us/services/cache/)标准资源。
- 从https://github.com/rustd/RedisSamples下载了 .net redis 示例代码。
- 当我编译示例代码时,它下载了名为 StackExchange.Redis 的 nuget 包(以及其他库)。
- 播放示例以了解 redis 如何从 .net 客户端工作。
- 似乎原始 REDIS 命令由 StackExchange.Redis 库包装。
接下来,我想玩 RedisTimeSeries(如https://github.com/RedisTimeSeries/RedisTimeSeries所述)。
StackExchange.Redis .net 库似乎没有提供任何 API 来调用 RedisTimeSeries 模块相关的命令,例如 TS.CREATE、TS.ADD 等。
以下是我的问题:
- Azure Cache for Redis(来自 RedisLabs)是否支持 RedisTimeSeries 模块?
- 如果支持,如何从我的 .net 核心客户端调用与 TS 相关的命令?
- 如果不支持,是否有任何其他 .net 库可以让我这样做?
redis - Lettuce 动态命令接口如何与 Redis 模块配合使用?
尝试通过 Lettuce (Java) 向 Redis 发送 RedisTimeSeries 命令。它适用于简单的命令,例如 TS.Create,但我无法使用稍微复杂的命令(例如 TS.ADD,它将键、分数、值作为 args)或 TS.Range(它采用 args 并返回 List)工作。
Redis 在 Linux 上运行(Ubuntu 通过 WSL 在 Windows 10 上运行),RedisTimeSeries 安装在 Redis 上。Redis 和 RedisTimeSeries 命令已在 Linux 上使用 Redis-cli 进行了测试,它们工作正常。我使用 VS Code + JDK 13.0 + Maven 为 Redis 构建和测试 Java 客户端。到目前为止,Lettuce 支持的 Redis 命令通过客户端运行,以及一些简单的 RedisTimeSeries 命令。
代码片段:
但是当我将所有东西都切换到测试 TS.ADD 时,即使我相应地添加了额外的参数,它也不起作用。例如
这是运行的异常:
python - REDIS BGSAVE 断言失败,由信号 6 终止。(macos / python)
Redis 相当新(3 天,哈哈)在一般情况下都可以正常工作,但出现此错误。
根据我在 Stackoverflow 上阅读的先前问题的答案,我已经将 rdb 文件的位置更改为可写位置。
事实上,我的脚本成功地重复执行了 BGSAVE 一段时间,然后在某个时候它开始抛出上述错误。
我重新启动了服务器,只是为了 'see',因此上面的代码片段没有显示成功的尝试。但是您可以将DB loaded from disk其视为一个指标。
对此的任何直接帮助,或者进一步阅读与此相关的有用主题,我们将不胜感激。
谢谢
redis - Redis:如何计算某个范围内的流中的元素?
经营目标
我正在创建一个依赖于一些时间序列的仪表板,我将使用 Redis 来实现它。我是使用 Redis 的新手,我正在尝试使用 Redis-Streams 来计算流中的元素。
我知道我可以使用 XLEN 命令获取元素的总数,如下所示:
但我也想知道一个时期的元素,例如:
我知道我可以使用 LUA 来计算这些元素,但我想要一些真正快速的方法来实现这一点,而且我知道使用 Redis 标记将是最快的方法。
有没有办法通过直接的 Redis 命令来实现这一点?还是我必须编写一个 Lua 脚本才能做到这一点?
附加信息
我受 AWS 的 ElastiCache 限制只能使用 Redis 5.0.6,我无法安装其他模块,例如RedisTimeSeries模块。我想使用该模块,但目前不可能。
python - python redistimeseries 时间戳不能早于时间序列中的最新时间戳
我正在尝试使用 Python redistimeseries 包 (RedisLabs v0.8.0) Python Redis 包 (RedisLabs) v3.5.3
但是,当我执行 TS.ADD - 它总是返回错误
无论我给它什么时间戳。我可以采用相同的时间戳值,并在相同的时间序列上在 redis-cli 中执行相同的 ADD,而不会出现任何问题。
为了确保现有记录不是问题,我创建了一个新的时间序列,因此不存在键/值/时间戳。同样的结果。
例子:
工作正常。
但是如果我在 Python 中做同样的事情(使用新的空时间序列),使用当前时间戳我会得到错误;
不知道发生了什么或我做错了什么,我很难找到 Python 包的文档或示例,这些文档或示例会突出我的错误或缺乏理解。
有任何想法吗 ?
我正在使用 Python 3.7、Redis 3.5.3、Redis TimeSeries 0.8.0
docker - 在启动时创建一个带有现有 rdb 和加载模块的 redis docker 容器?
我正在尝试使用我将持久副本保存到本地计算机的 redis db 启动 docker 容器。我目前有一个 docker 容器使用它加载带有卷的 redis,docker-compose.yml但它错过了我的 redis.conf(其中包含 loadmodule 命令)位于带有 rdb 文件的卷中
这开始加载 RDB,但由于数据使用此时间序列模块而崩溃。
我可以使用新的 redis 数据库加载一个单独的 docker 容器,该数据库使用以下 dockerfile 加载了 time seriese 模块。我的问题是我无法弄清楚如何同时做这两个!
有没有办法从 docker-compose.yml 调用 dockerfile 或在 dockerfile 中声明卷?那,或者我应该创建我自己的图像,我可以在 docker-compose.yml 中调用?任何帮助都将不胜感激,我认为我只是在兜圈子。
dockerfile
编辑:
好的.. 稍有改进我可以在 docker-compose.yml 中调用 redis-timeseries 图像
这是一个开始,但是我仍然需要增加数据库的最大数量,我过去一直在使用 redis.conf 来执行此操作。
redis - Redis TimeSeries 是在股票价格中捕捉烛台的正确工具吗
我目前正在尝试为股票价格烛台做一个简单的实现。假设我们有一只名为 XYZ 的股票。该股票接收价格流(没有特定频率),(例如)看起来像:XYZ:[10.2, 10.7, 12, 11 ....]。
目标是记录每分钟的一些指标,以反映该股票的状态。烛台具有收盘价(一分钟内的最后已知价格)、高价(一分钟内的最高价格)等指标。
我认为可以实现这一点的一种方法是使用Redis TimeSeries。我考虑了这个解决方案,因为我可以在价格流上创建规则,并且每 60 秒它会将一些聚合(如:max、min、first..等)刷新到目标存储桶。
我当前使用 Redis TimeSeries(在Python中)对每个股票价格的蜡烛条的实现看起来像这样(再次使用股票 XYZ 作为示例)并且为简单起见没有标签:
我的问题是:
- 有没有办法在一个规则中发送多个聚合(如 max、last...等),而不是为每只股票创建多个源和目标存储桶?
- Redis TimeSeries 是否适合此任务?或者使用其他解决方案(例如 Redis 流)会更容易吗?
python - Redis时间序列 - 汇总所有命中
我使用这个 python 客户端:
https ://github.com/ryananguiano/python-redis-timeseries
我怎样才能总结所有命中?
如果我理解,当我查询时get_total_hits(),我必须选择以下之一:
例如
我可以写“全部”而不是“1分钟”吗?
我想总结所有的点击量。
我可以设置“1day”和一个非常大的数字,但我希望有更好的方法。
其次,这种查询的性能如何?
python - Redis Timeseries,使用 LUA 滚动求和
我有一个时间序列,我想计算其滚动总和。我的想法(这可能已经不是最理想的了)是有一个脚本来计算每个数据点,然后在管道中从 python 运行它。
我在剧本上挣扎。
当我在 redis-cli 上用 args 评估这个1 ts:rolling:sum 1609011855000 1609013655000
它返回:
(error) ERR Error running script (call to f_e57a3287fc55b792d33ba7c21e3aae715c5ee3e5): @user_script:1: @user_script: 1: Lua redis() command arguments must be strings or integers
第一次通话
给我
奇怪的是,我可以对时间戳求和,但不能对值求和。
我以前从未接触过 lua,所以我可能在这里遗漏了一些非常明显的东西
我不确定我是否清楚,所以这里是 python 和 pandas,我想要实现的目标: