当我们需要存储类似每个用户ID,及其访问行为(浏览,登录,下载时间戳),由于这些数据只是与 ID 对应一条行为的时间戳信息,因此不需要使用到关系型数据库,可以利用 Redis 中存储的键值数据类型,正好可以满足这样的存储需求,Redis 利用自身的数据结构及其扩展模块,提供了两种解决方案。
一、时序数据的读写特点
(1)写特点
- 时序数据一般就是为了记录某个时刻事务的状态,因此一边写入之后就需要再进行修改操作,通常需要记录成千上万台设备及事物的状态,因此对于写入的效率要求较高,在 Redis 中支持高效率的写入的数据类型有 String 和 Hash,它们写入的时间复杂度为 O(1),但是在 11 节中讲解到,一般而言存储的时序数据中但是数据占用的内存并不大,但是由于 String 需要大量额外的元数据的开销,因此不适用于存储大量数据的场景。
(2)读特点
- 时序数据写入之后通常之后就会进行大量的读操作,同时并对数据进行单条记录的查询,或者是进行时间范围的查询,又或者继续时间范围内的一些复杂的聚合运算(最大,最小值,求和等等)。
(3)结论
因此在 Redis 中为了适应时序记录的写入操作快,读操作频繁,并且要支持单点查询,范围查询及其对查询结果进行聚合运算的要求,在 Redis 中就提供了两种解决方案用于存储时序时序数据,这两种方案分别可以基于 S