首页 > 其他分享 >高级数据类型

高级数据类型

时间:2023-06-04 19:11:47浏览次数:41  
标签:count ... 数据类型 高级 Bitmaps member key 基数

Bitmaps

redis应用于信息状态统计

Bitmaps类型的基础操作

  1. 获取指定key对应偏移量上的bit值
getbit key offset
  1. 设置指定key对应偏移量上的bit值,value只能是1或0
setbit key offset value

Bitmaps类型的扩展操作

  1. 对指定key按位进行交、并、非、异或操作,并将结果保存到destKey中
bitop op destKey key1 [key2...]
  1. 统计指定key中1的数量
bitcount key [start end]

例:
img

HyperLogLog

统计不重复数据的数量

统计独立UV

  • 原始方案: set
    • 存储每个用户的id(字符串)
  • 改进方案: Bitmaps
    • 存储每个用户状态(bit)
  • 全新的方案: Hyperloglog

基数

  • 基数是数据集去重后元素个数
    例如:
    {1,3,5,7,5,7,8} 基数集:{1,3,5,7,8} 基数:5
  • Hyperloglog是用来做基数统计的,运用了LogLog的算法

Hyperloglog类型的基本操作

redis应用于独立信息统计

  1. 添加数据
pfadd key element [element ...]
  1. 统计数据
pfcount key [key...]
  1. 合并数据
pfmerge destkey sourcekey [sourcekey...]

相关说明

  • 用于进行基数统计,不是集合,不保存数据,只记录数量而不是具体数据
  • 核心是基数估算算法,最终数值存在一定误差
  • 误差范围:基数估计的结果是一个带有0.81%标准错误的近似值
  • 耗空间极小,每个hyperloglog key占用了12K的内存用于标记基数
  • pfadd命令不是一次性分配12K内存使用,会随之基数的增加内存逐渐增大
  • pfmerger命令合并后占用的存储空间为12K,无论合并之前数据量多少

GEO

GEO类型的基本操作

  1. 添加坐标点
geoadd key longitude latitude member [longitude latitude member...]
  1. 获取坐标点
geopos key member [member...]
  1. 计算坐标点
geodist key member1 member2 [unit]
  1. 根据坐标求范围内的数据
georadius key longitude latitude radius m|km|ft|mi [without] [withdist] [withhash] [count count]
  1. 根据点求范围内数据
georadiusbymember key member radius m|km|ft|mi [withcoord] [withdist] [withhash] [count count]
  1. 获取指定点对应的坐标hash值
geohash key member [member...] 

标签:count,...,数据类型,高级,Bitmaps,member,key,基数
From: https://www.cnblogs.com/xiaodunan/p/17456130.html

相关文章

  • nodejs vuejs java python 入门到高级视频
    多抽出一分钟学习,让你的生命更加精彩!高性能高可用Yii2.0电商平台仿京东商城高级组件MySQLLVSDocker+Kubernetes(k8s)微服务容器化实战实战Docker到Kubernetes技术系列视频教程@黑马JAVAEE19期⑭jQuery实战经典【No0066】尚学堂架构师视频06、微服务架构00、SpringBoot微服务架......
  • 2022-2023 java高级面试总结
    1.Java内存模型是什么?JMM即Java内存模型(Javamemorymodel),在JSR133里指出了JMM是用来定义一个一致的、跨平台的内存模型,是缓存一致性协议,用来定义数据读写的规则。Java内存模型规范java如何按需禁用缓存和编译优化的方法。2.mysql查询第一万条数据后20条数据,sql语句如何写?sel......
  • 【python基础】复杂数据类型-列表类型(列表切片)
    1.列表切片前面学习的是如何处理列表的所有数据元素。python还可以处理列表的部分元素,python称之为切片。1.1创建切片创建切片,可指定要使用的第一个数据元素的索引和最后一个数据元素的索引。与range函数一样,python在到达指定的第二个索引前面的数据元素后停止。比如要输出列表......
  • Request类源码分析、序列化组件介绍、序列化类的基本使用、常用字段类和参数、反序列
    目录一、Request类源码分析二、序列化组件介绍三、序列化类的基本使用查询所有和查询单条四、常用字段类和参数(了解)常用字段类字段参数(校验数据来用的)五、反序列化之校验六、反序列化之保存七、APIVIew+序列化类+Response写的五个接口代码八、序列化高级用法之source(了解)九、......
  • 【python基础】复杂数据类型-列表类型(排序/长度/遍历)
    1.列表数据元素排序在创建的列表中,数据元素的排列顺序常常是无法预测的。这虽然在大多数情况下都是不可避免的,但经常需要以特定的顺序呈现信息。有时候希望保留列表数据元素最初的排列顺序,而有时候又需要调整排列顺序。python提供了很多列表数据元素排序的方式,可根据情况选用。1......
  • Cisco ASA高级配置
    CiscoASA高级配置拓扑图:推荐步骤:桥接计算机路由器防火墙配置IP地址R1访问ASA使用默认路由,ASA访问R1使用静态路由验证全网互通配置WEB服务器开启网站功能,桥接客户端访问网站桥接计算机添加host文件,访问www.自己名字.org网站,访问www.jd.com,ASA配置URL过滤不允许访问www.jd.com实验步......
  • 第2章. 变量和简单数据类型
    2.2变量2.2.1变量的命名和使用2.2.2使用变量时避免命名错误2.2.3变量是标签2.3字符串2.3.1使用方法修改字符串的大小写2.3.2在字符串中使用变量2.3.3使用制表符或换行符来添加空白2.3.4删除空白2.3.5使用字符串时避免语法错误2.4数2.4.1整数2.4.2浮点数......
  • 整合ChatGPT与Flutter高级技术
    整合ChatGPT与Flutter高级技术在当今快节奏的数字时代,人们对智能化应用的需求越来越高。ChatGPT是一种基于人工智能的语言模型,而Flutter是一种快速开发移动应用程序的框架。本文将介绍如何将这两种技术整合在一起,从而为用户提供更好的智能化移动应用体验。ChatGPT概述ChatGPT(Genera......
  • 高级程序员和新手小白程序员区别你是那个等级看解决bug速度
    IT入门深似海,程序员行业,我觉得是最难做的。加不完的班,熬不完的夜。和产品经理,扯不清,理还乱的宿命关系一直都在新需求-做项目-解决问题-解决bug-新需求好像一直都是这么一个循环。(哈哈哈)我觉得一个好的程序员,判断根本取决于,遇到生产问题和bug,解决的问题的思路,和解决问题时......
  • FL Studio 21 终身免费升级高级完整解锁版已经到来啦,fl 21配置要求语言切换
    说到制作电音的软件,兔八哥爱分享一定会把FLStudio放到第一个来讲。水果是一款为了电子音乐而生的的宿主软件。水果,独特的节拍音序器组件和通道机架与混音台模块打造的编曲“块”的思路。是极为适合于电子音乐的编排。而且随着水果版本不断地升级,现在不仅只适用于电子音乐,也可以完......