redis hyperloglog初探

  • 最近遇到一个很有意思的问题,如何统计一天之内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(原文链接),接下来通读源码
原文地址:https://www.cnblogs.com/aobama/p/4362682.html