在做了一些测试之后,最好的成绩归于 Json 序列化数据案例。我想这也取决于序列化结构。在测试用例中,它仅序列化 2 个字段结构。
一些结果(以秒为单位的时间):
Users: 600
Notifications per user: 1200
--------------------
#### With Json in Set structure ####
Write time: 93.0
Read time: 6.65
dbsize (number of keys): 600
Memory: 150.60M
#### With set and hash data structures ####
Write time: 367.72
Read time: 40.2
dbsize (number of keys): 721200
Memory: 224.17M
我将稍微解释一下测量测试(我使用了 Python):
对于 Json 序列化案例,我使用了一个排序集(zset)(每个用户的通知 zset),它的分数是 unix 时间戳(浮点数)。它序列化一个 2 字段哈希(Python 字典)并将字符串添加到排序集中。
为了检索,我得到了所有的 zset 字符串,并一一反序列化数据。
对于 Hash 方法,我使用了 3 个数据结构:
- 最简单的一个是每个通知 zset 的计数器,用于为每个通知创建唯一键(我也用 uuids 测试过,结果或多或少是相同的,所以差别不大)
- 另一种数据结构是 zsets,与 Json 的情况相同,但我们不存储 Json 数据,而是存储通知哈希键
- 最后一个是包含所有数据字段的通知哈希
并检索数据。或多或少与 json 案例相同,我从每个 zset 中获取所有密钥,然后一一获取所有通知。
我知道这种情况不是我所面临的,因为通常我不会检索所有通知,而且测试可能有错误或者有更好的方法来解决这种情况。
无论如何,这里有一些测量和测试脚本