【发布时间】:2016-02-16 10:59:03
【问题描述】:
我是using redis to store bits to track hourly, daily, weekly, and monthly active users。每次我有一个具有唯一 user、hour 或 eventType 的事件时,都会存储一位。
我正在使用的redis命令(节点客户端)是client.setbit(key, id, 1);
其中key 类似于login-mobile-2015-11-14-04 而id 是一个六位整数(指用户)。
在短短几天内,我达到了 heroku redis 免费计划的 25MB 限制,但最大实际数据量(基于唯一事件和用户的数量为每天192000,比25MB。我怀疑是我的密钥太长或问题出在哪里,但我对 redis 不太了解,所以想问问。
【问题讨论】:
-
根据 redis 命令, SETBIT 创建一个字符串,其长度可以保存曾经使用过的最大偏移值(在您的情况下是用户的 id)并将该位设置为 0x00 或 0x01(取决于您的 SETBIT为 0 或 1)。在您的情况下,这意味着每天最多使用 (999999 / 8) 字节 + 26 字节(键名)+ redis 开销(???)。我不知道heroku是怎么计算的,我有一个空白的新redis和SETBIT key 0 1 > SETBIT key 999999 1 > SAVE 结果dump.rdb size = 1484 bytes。
-
Ken,RDB 转储总是比内存存储小得多。没有可比性。
标签: node.js heroku redis node-redis nosql