- 最近遇到一个很有意思的问题,如何统计一天之内30分钟内同时在线的人数峰值,我思考了两个模型,一:教师上课点名模型 2:学生相互确认签到模型,用到了集合,二叉查找树,快速定位判断,用内存换取执行时间算是勉强可以接受,但是随着数据量的增长,这两个模型捉急了,于是考虑hyperloglog算法,不懂,于是研究redis了.
- SADD ,向一个集合添加元素,可单个,多个,比如:sadd key1 "a" "b" c d;sadd key1 f ,引号可以不要
- SCARD ,统计个数 scard setname "element"
- SDIFF 计算在A不在B的集合 sdiff setname1 setname2
- SDIFFSTORE 同上,但是返回了结果集 sdiffstore setname1 setname2
- SINTER 取集合的交集 sinter setname1 setname
- SINTERSTORE 取集合的交集并返回结果 sinterstore setname1 setname2
- SISMEMBER 判断一个成员是否在集合中 sismember setname "element"
- SMEMBERS 返回集合的所有成员 smembers setname
- SMOVE 将一个成员从一个集合移动到另一个集合 smove set1 set2 "element1"
- SPOP 随机弹出一个元素 ,不是栈 ,spop setname
- SRANDMEMBER 同上,但不删除
- SREM //删除栈顶元素
- SSCAN //目前版本未知
- SUNION //联接,其实就是集合的并,sunion setname1 setname2
- SUNIONSTORE //同上,但是返回了结果
- 在尝试了官网的demo以后,发现这个东西居然把集合思想如此自然添加给了字符串,特别适合文本匹配,论文查重,大数据处理
- 注:在程序中,我们只需要模仿以上行为,用command sentence翻译以上命令并传递给特定的select(redis中叫做redisCommand())函数即可
- ,http://redis.io/commands/sunionstore(原文链接),接下来通读源码