我计划使用Redis作为数据库的主要部分并持有一大组键(~20 ^ 12键+值)。
这些键将如下所示(对于帖子):
+-------------+
+-- title ----+
+-------------+
+---- id -----+ <- Increment id
+-------------+
+-- author ---+
+-------------+
+-- content --+
+-------------+
+--- date ----+
+-------------+
+--- votes ---+
+-------------+
+--- views ---+
+-------------+
+--- locked --+ <- Boolean value
+-------------+
看起来HMSET是最好的选择,但它是O(N)而HSET O(1)。
是否有类似HMSET的操作,但时间复杂度为O(1)?我最担心的是网络绊倒开销以及检索某个密钥的时间,如果恰好位于字段中间。
你用这么大的数据集解决的方法是什么?
答案 0 :(得分:2)
我引用了关于HMGET的Redis文档:
时间复杂度:O(N)其中N是要设置的字段数。
所以N只是你项目的字段数。如果您只从项目中获得一个字段,那么它确实是O(1)(就像HGET一样)。当然,您需要知道您要查找的字段的名称。
一次通话只是一个多个HSET / HGET。