我正在尝试将redis用作时间序列,为此,我正在使用Sorted sets和Hash。哈希将存储我的域对象,而已排序的集合将以分数作为时间引用它。当我在millisec中获取记录并具有大约300K / sec的吞吐量时,在Redis上更快地写入数据的最佳方法是什么。从写的角度来看,我有两个以下查询:
repository.save(data); //使用spring数据redis的存储库将数据对象存储在哈希中redisTemplate.opsForZSet()。add(key,memberValue,data.getSourceTime()); //创建用于哈希引用的排序集作为时间戳作为成员。
我正在寻找一种更快的方式来存储这些数据。
除了经典的sortedsets +哈希之外,还有两个选项:Streams和RedisTimeSeries。
RedisTimeSeries-如果数据是数字(例如温度等传感器数据),则可以将序列存储在键中,而无需进行任何其他工作。附加功能:
https://github.com/RedisTimeSeries/RedisTimeSeries/
Streams-如果您有非数字事件流,并且您不关心任何基于数字的优化[对于同一字段输入存在某些压缩]。
均支持上限和范围查询。
https://github.com/RedisTimeSeries/RedisTimeSeries/
披露:我在redislabs中启动了RedisTimeSeries项目。