Redis命令-HyperLogLog_Mergades-程序员宅基地

技术标签: Redis  

HyperLogLog数据结构简介

    可以看http://www.cnblogs.com/ysuzhaixuefei/p/4052110.html  博客,介绍的相对比较清晰。

    HyperLogLog数据结构,可以接收多个参数输入,然后估算出元素的基数。

    • 基数:集合中不同元素的数量。比如 {'apple', 'banana', 'cherry', 'banana', 'apple'} 的基数就是 3 。
    • 估算值:算法给出的基数并不是精确的,可能会比实际稍微多一些或者稍微少一些,但会控制在合
理的范围之内。
    HyperLogLog 的优点是,即使输入元素的数量或者体积非常非常大,计算基数所需的空间总是固定
的、并且是很小的。
    在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基
数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。
但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以
HyperLogLog 不能像集合那样,返回输入的各个元素。

    PFADD key [element ...]:将任意数量的元素添加到指定的HyperLogLog中去。相对会更新HyperLogLog内部,更改集合的基数。如果对应的HyperLogLog的基数发生变化则返回1,否则返回0。

    返回值:基数被修改返回1,否则返回0

  
   
  1. 127.0.0.1:6379> PFADD databases Redis Mongodb MySQL
  2. (integer) 1
  3. 127.0.0.1:6379> PFCOUNT databases
  4. (integer) 3
  5. 127.0.0.1:6379> PFADD databases Redis
  6. (integer) 0
  7. 127.0.0.1:6379> PFADD databases RedisTest
  8. (integer) 1
  9. 127.0.0.1:6379> PFCOUNT databases
  10. (integer) 4

    PFCOUNT key[key ... ]:PFCOUNT作用于单个key的时候,返回该key的基数。当PFCOUNT命令作用于多个key时,返回并集的近似数。

    返回值:给定hyperLogLog的基数。

    PFMERGE destkey sourcekey[sorcekey ...]:将多个HyperLogLog合并为一个HyperLogLog,合并后 的HyperLogLog的基数接近于所有输入的可见集合的并集。合并得出的hyperLogLog会被存储到destkey中去。

    返回值:成功返回ok。

  
   
  1. 127.0.0.1:6379> PFADD nosql Redis MongoDB Memcache
  2. (integer) 1
  3. 127.0.0.1:6379> PFADD rdbms mysql mssql oracle
  4. (integer) 1

  1. 127.0.0.1:6379> PFMERGE databases nosql rdbms
  2. OK
  3. 127.0.0.1:6379> PFCOUNT databases
  4. (integer) 9
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/fuli_mouren/article/details/46626365

智能推荐

模拟web服务器项目,node.js express搭建简单的web服务器_姜小白71的博客-程序员宅基地

说明:开发环境使用的是Webstrom1、Express 简介Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。使用 Express 可以快速地搭建一个完整功能的网站。Express 框架核心特性:可以设置中间件来响应 HTTP 请求。定义了路由表用于执行不同的 HTTP 请求动作。可以通过向模板传递参...

CMake学习使用资料整理_Cc1924的博客-程序员宅基地

1.CMake实践与采坑记录(博客,写的很好)CMake 实践与踩坑记录(一)CMake 实践与踩坑记录(二)CMake 实践与踩坑记录(三)CMake 实践与踩坑记录(四)

Maven学习总结(38)——Maven下载失败文件夹批量删除问题的两种解决方法_科技D人生的博客-程序员宅基地_maven批量删除

用过Maven的应该都遇到过,当网速不好或者源有问题的时候,Maven的依赖包经常下载失败。 下载失败后在本地仓库对应的文件夹中有一个以.lastUpdated结尾的文件,如果不手动删除这个文件,就不能重新更新依赖,重新下载对应的jar包。一般情况下遇到的时候可能直接手动找到目录删除。当出现很多这样的情况时,一个个找起来也很麻烦。方法一:Linux:find ~/.m2  

vulnhub靶机-THALES: 1_cr4ke3的博客-程序员宅基地_vulhub靶机

1、找到靶机ip:192.168.1.106nmap -sn 192.168.1.0/242、扫描靶机端口,开放22和8080端口 3、先搜索对应中间件有没有公开漏洞,没有发现,于是先从8080端口入手,访问之后是一个tomcat服务默认页面,先扫描一下目录可疑的就只有shell目录,但是访问就一直转圈,跟平常反弹shell的页面一样,所以猜测应该是作者测试时上传的,结合tomcat和shell目录,可以猜想应该是tomcat后台布置war包getshell,但是管理后台需要...

Importance Sampling (重要性采样)_qq_39429669的博客-程序员宅基地

Importance Sampling (重要性采样) - Ph0en1x的文章 - 知乎 https://zhuanlan.zhihu.com/p/36816898

适配器模式(结构型模式)_Star星屹程序设计的博客-程序员宅基地

Adapter(适配器模式)属于结构型模式,结构性模式关注的是如何组合类与对象,以获得更大的结构,我们平常工作大部分时间都在与这种设计模式打交道。意图:将一个类的接口转换成客户希望的另一个接口。Adapter 模式使得原本由于接口不兼容而不能在一起工作的那些类可以一起工作。适配器模式遵照了以下几个设计原则:依赖倒转原则 迪米特法则适配器模式分为:类适配器 和 对象适配构造Adapter类继承Target类,并实现Adaptee接口(适配器模式的类版本) 将一个Adapt...

随便推点

python脚本向influxdb写入数据_weixin_34380948的博客-程序员宅基地

python3使用requests模块向influxdb的http API发送接口请求实现数据写入,如下:1. 创建数据库[python]view plaincopyimportrequestsposturl='http://192.168.220.128:8086/query'data={'q':'createDATABASEmydb'}...

文远知行β_Edwin66666的博客-程序员宅基地

文远知行βProblem Description“上一个国家的人真的是好心呢。”在山脉群之间,是一片宽广平坦的大地。被草木覆盖的绿意,顺着灰色的山间延伸。摩托车(注:两轮的车子,尤其是指不在天空飞行的交通工具)飞驰在道路上。骑士年约十五、六岁,有着一头黑色短发及炯炯有神的脸庞。她身穿黑色夹克,腰际系着一条粗皮带。右腿悬挂着左轮手枪式的掌中说服者(注:说服者是枪械。这里是指手枪)的枪袋...

uct框架数据库sql文件导入错误之 sql_mode_weixin_30410119的博客-程序员宅基地

uct框架在导入sql文件时可能会出现一种错误ERROR 1101 (42000): BLOB/TEXT column 'brief' can't have a default value这是由于mysql环境变量sql_mode设置使得对sql语句检查规则和数据校验有不同处理方式。mysql支持三种sql_mode模式。ANSI模式:宽松模式,对插入数据进行校验,如...

中文排版CSS心得[转摘]_avgk01030117的博客-程序员宅基地

数月来学习web标准,并遵循标准设计和制作web页面。一直想写点什么,整理一下自己的心得体会。写这篇文章,主要是针对中文排版设计,英文排版因为很少做,所以不涉及。先介绍如何设定字体、颜色、大小、段落空白等比较简单的应用,后面再介绍下比如首字下沉、首行缩进。最后讲一些常用的web页面中文排版,比如中文字的截断、固定宽度词内折行(word-wrap和word-break)等等。因为只是写一些...

Android之桌面组件App Widget案例_1361976860的博客-程序员宅基地

模拟一个案例:把AppWidget添加到桌面后,点击AppWidget后AppWidget文本会轮回改变main.xml布局文件<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android...