当前位置: 首页 > news >正文

Redis三种特殊数据类型

目录

  • Geospatial(地理空间)
  • Hyperloglog
  • Bitmaps

Geospatial(地理空间)

Redis的Geo在Redis3.2版本就推出了,该功能可以推算地理位置的信息,两地之间的距离,方圆几里的人

geoadd:添加地理位置
在这里插入图片描述

geoadd china:city 116.40 39.90 beijinggeoadd china:city 121.47 31.23 shanghaigeoadd china:city 106.50 29.53 chongqing 114.05 22.52 shengzhengeoadd china:city 120.16 30.24 hangzhou 108.96 34.26 xian

geopos:从key里返回所有给定位置元素的位置(经度和纬度)

在这里插入图片描述

geodist:
返回两个给定位置之间的距离

可以指定单位参数
m :米
km:千米
mi:英里
ft:英尺

默认单位是米

在这里插入图片描述
georadius:以给定的经纬度为中心,找出某一半径内的元素

查询经纬度为(110,30)周围500公里的城市信息
在这里插入图片描述

输出带上经纬度
在这里插入图片描述
输出限制个数
在这里插入图片描述
显示到中心位置的距离

在这里插入图片描述

georadiusbymember:找出位于指定范围内的元素,中心点是由给定的位置元素决定

在这里插入图片描述

geohash:返回一个或多个位置元素的geohash表示
该命令返回11个字符的geohash字符串

在这里插入图片描述
将二维的经纬度转换为一维的字符串,如果两个字符串越接近,那么距离越近

由于geo底层的实现原理其实就是zset,我们可以使用zset命令来操作geo
查看所有元素

在这里插入图片描述
移除元素

在这里插入图片描述

Hyperloglog

Hyperloglog是一种用于估计大规模数据集基数(即集合中不同元素的数量)的概率性算法

网页的UV(一个人访问网站多次,但是还是算作一个人)
传统的方式:set保存uid,然后就可以统计set中的元素数量作为标准判断

这个方式如果保存大量的用户id,就会比较麻烦,我们的目的是为了计数,而不是保存用户id

使用Hyperloglog的优点:占用的内存是固定的,如果要存放2^64不同的元素的基数,只需要废12KB内存,如果要从内存角度来比较的话,Hyperloglog首选,有0.81%的错误率,统计uv任务可以忽略不计

HyperLogLog 由 Philippe Flajolet 在 原始论文《HyperLogLog: the analysis of a near-optimal cardinality estimation algorithm》 中提出。Redis 中对 HLL 的三个 PFADD/PFCOUNT/PFMERGE,都是以 PF 开头,就是纪念 2011 年已经去世的 Philippe Flajolet 。

pfadd:创建元素
在这里插入图片描述
pfcount:统计基数数量

在这里插入图片描述
pfmerge:合并

在这里插入图片描述
如果允许容错,那么一定可以使用Hyperloglog
如果不允许容错,那么就使用set或者自己的数据类型即可

Bitmaps

位图,数据结构,都是操作二进制位来进行记录,只有0和1两个状态

记录每天是否打卡,1表示打卡,0表示未打卡

在这里插入图片描述

获取某天是否打卡
在这里插入图片描述
统计总的打卡天数

在这里插入图片描述

http://www.dtcms.com/a/323417.html

相关文章:

  • 【深度学习2】logistic回归以及梯度下降
  • synchronized和RentrantLock用哪个?
  • Datawhale AI夏令营第三期,多模态RAG方向 Task2
  • 小白成长之路-Docker部署
  • 第二十八天(cookiesessiontokeny验证)
  • JVM性能调优的原则有哪些?
  • 深入理解C++构造函数与初始化列表
  • P1025 [NOIP 2001 提高组] 数的划分 题解
  • 【嵌入式DIY实例-Arduino篇】-水质检测系统
  • SQL面试题及详细答案150道(01-20) --- 基础概念与语法篇
  • python踩坑之识别错误...
  • 如何分析需求的可行性
  • Spring——Spring懒加载设计使用场景
  • 深入解析进程创建与终止机制
  • Linux 信号处理标志sa_flags详解
  • MPU-6050 超实用入门
  • 一文详解 C++ 继承体系
  • [C/C++线程安全]_[中级]_[多线程如何使用共享锁提升性能]
  • EP06:【DL 第二弹】动态计算图与梯度下降入门
  • 【C/C++】具有C风格的强制类型转换:显式类型转换、隐式类型转换,C语言强制类型转换
  • 第六章:【springboot】框架springboot原理、springboot父子工程与Swagger
  • 算法题(183):质量检测
  • 《答客难》东方朔
  • 网络原理-初识
  • FreeRTOS入门知识(初识RTOS任务调度)(三)
  • AVL树的四种旋转
  • 【Python 语法糖小火锅 · 第 4 涮】
  • 资深全栈工程师面试题总结
  • 【牛客刷题】小红的区间删除
  • 第16届蓝桥杯Scratch选拔赛初级及中级(STEMA)2024年11月24日真题