Redis的三种特殊数据类型

news2024/12/28 19:37:25

文章目录

  • 一、Redis geospatial 地理位置
  • 二、Redis Hyperloglog 基数统计的算法
  • 三、Redis Bitmaps 位存储(0、1)
  • 总结


一、Redis geospatial 地理位置

  • 1.geoadd:将指定的地理空间位置(纬度、经度、名称)添加到指定的key中。
geoadd china:city 121.472644 31.231706 shanghai
geoadd china:city 120.619585 31.299379 suzhou
geoadd china:city 116.405285 39.904989 beijing
geoadd china:city 113.280637 23.125178 guangzhou 113.26197 23.10379 haizhuqu

往china:city这个key里,添加了5个地方的经纬度:上海、苏州、北京、广州、广州海珠区。

  • 2.geopos:从key里返回所有给定位置元素的位置(经度和纬度)。
geopos china:city suzhou shanghai

返回位置的坐标。返回位置的坐标。

  • 3.geodist:返回两个给定位置之间的距离。如果两个位置之间的其中一个不存在, 那么命令返回空值。

单位:
- m 表示单位为米(默认)。
- km 表示单位为千米。
- mi 表示单位为英里。
- ft 表示单位为英尺。

geodist china:city suzhou shanghai km

返回两地的距离

  • 4.georadius:以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。
georadius china:city 121.49295 31.22337 30 km

我以 上海黄浦区的坐标121.49295 31.22337为中心,寻找30km之内的城市。
再远点,100km之内,还可以找到suzhou,加上withdist显示出距离。

georadius china:city 121.49295 31.22337 100 km withdist

再加上count,只返回我指定的数量。

georadius china:city 121.49295 31.22337 100 km withdist withcoord count 1
  • 5.georadiusbymember:这个命令和 georadius命令一样, 都可以找出位于指定范围内的元素。但是这里不是指定中心点坐标,而是指定以哪个元素为中心点。
georadiusbymember china:city suzhou 100 km withdist

这里以元素suzhou为中心点,找周围100km内的其他元素。

  • 6.geohash:一个或多个位置元素,用hash表示。
geohash china:city suzhou shanghai

返回11个字符的Geohash字符串,代表当前经纬度的字符串,就是换了个形式,将二维的经纬度转化成了一个一维的字符串。如果2个字符串越接近,则2个位置距离也越近

geo的底层原理还是zset,我们可以使用zset命令操作geo,比如移除geo里的城市。

zrem china:city haizhuqu

二、Redis Hyperloglog 基数统计的算法

基数:一个集合中的不重复元素的个数。

优点:占用的内存是固定的,2^64不同的元素的技术,只需要废12KB内存!如果要从内存角度来比较的话 Hyperloglog 首选!

实例:网页的UV(一个人访问一个网站多次,但还是算作一个人)

  • 1.PFadd:创建元素
PFadd mykey a b c d e f
  • 2.PFCOUNT:统计key元组元素的基数数量
PFCOUNT mykey
  • 3.PFMERGE:合并两组元组
PFMERGE mykey3 mykey mykey2

在这里插入图片描述
错误率:0.81%,如果允许容错,那么可以选择Hyperloglog。

三、Redis Bitmaps 位存储(0、1)

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

365天= 365 bit1字节= 8bit 46个字节左右!

  • SETBIT key offset value
    对key存储的字符串,设置或者清除指定偏移量上的位(bit),位的设置或者清除取决于value参数,0/1;当key不存在时,自动生成一个新的字符串。字符串会进行伸展确保value保存在指定的偏移量上。字符串进行伸展时,空白位置以0填充。

    offset 范围:

    0~2^32

    返回值:
    指定偏移量原来存储的位

  • GETBIT key offset
    获取指定偏移量上的位(bit),当offset比字符串长度大,或者key不存在,返回0;
    返回值:
    字符串值指定偏移量上的位(bit)

  • BITCOUNT key [start] [end]
    计算给定字符串中,被设置为1的bit位的数量。start和end参数可以指定查询的范围,可以使用负数值。-1代表最后一个字节,-2代表倒是第二个字节。

    注意:start和end是字节索引,因此每增加1 代表的是增加一个字符,也就是8位,所以位的查询范围必须是8的倍数。
    返回值:
    被设置为1的位的数量


总结

以上就是Redis的三种特殊数据类型,希望对你有所帮助

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1184926.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue中 process.env 对象为空对象问题

问题:今天在处理vue项目环境问题的时候,发现直接打印 process 对象和打印 process.env 时 env 对象输出结果是不一样的,如下图所示: 在网上搜索了一番后发现还是有挺多朋友对此感到疑惑的,询问了同事,同…

VINS-Mono-后端优化 (一:预积分残差计算-IMU预积分约束)

这里先回顾一下预积分是怎么来的 VINS-Mono-IMU预积分 (三:为什么要预积分预积分推导) 这里贴出预积分的公式 具体含义解释看对对应的文章 整个误差函数如下 预积分 α \alpha α β \beta β γ \gamma γ 是用 IMU 预积分获得的增量&a…

Xtrabackup将本地数据迁移上云

本机和云端服务器安装xtrabackup #为了防止每次yum操作都会自动更新,卸载这个软件 yum -y remove mysql57-community-release-el7-10.noarch#下载XtraBackup yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm#激活该yum仓库 percon…

vue使用Echarts5实现词云图

先上官网 词云图有些特殊,它属于Echarts 的扩展,需要额外安装Echarts-wordcloud包。 Echarts 官网 Echarts-wordcloud 词云图官网 先安装 npm install echarts-wordcloud npm install echarts echarts-wordcloud再引入 echarts选一个引入就行&#xff…

Unity 利用UGUI制作圆形进度条

在Unity中使用Image和Text组件就可以制作简单的进度条。 1、首先准备好一张环状的PNG图,如下图。 2、把该图导入Unity中并转换成精灵。 3、在场景中创建Image和Text组件,并把上图中的精灵拖到Image的Source Image中,其中Image组件中的Image …

出口美国操作要点汇总│走美国海运拼箱的注意事项│箱讯科技

01服务标准 美国的货物需要细致的服务,货物到港后的服务也是非常重要的。如果在货物到港15天内,如果没有报关行进行(PROCEED),货物就会进入了G.O.仓库,G.O.仓库的收费标准是非常高的。 02代理资格审核 美国航线除了各家船公司&a…

ORA-00257: Archiver error. Connect AS SYSDBA only until resolved错误解决

错误的原因:是因为服务器分配空间不足,数据库归档日志满导致系统数据库登陆失败。 解决办法:1.删除以前的日志 2.增大归档日志的容量 3.关闭归档模式 一、删除以前的容量 1.登录账号后,查看ORACLE_BASE目录 【oraclelocalhost~】$…

搅拌站远程控制系统 | 集中生产 集中调度 集中控制

上海思伟远程控制 集中生产 集中调度 集中管理 安全 整洁 高效 稳定生产 超距离远程控制 无延迟流畅生产 支持一人控制两条生产线 单机双机灵活切换 年省人力成本数十万 绿色生产 远程控制并未降低生产效率 没了噪音,操控更舒适 信息化与自动化的完美结…

若依框架升级(对若依框架进行了升级,升级为Mybatis-plus)

ruoyi-plus: 对若依进行了升级Mybatis-plus版https://gitee.com/xiao--yan/ruoyi-plus.git

11-08 周三 图解机器学习之实现逻辑异或,理解输出层误差和隐藏层误差项和动量因子

11-08 周三 图解机器学习之实现逻辑异或,理解输出层误差和隐藏层误差项 时间版本修改人描述2023年11月8日14:36:36V0.1宋全恒新建文档 简介 最近笔者完成了《图解机器学习》这本书的阅读,由于最近深度学习网络大行其是,所以也想要好好的弄清…

Windows环境下编译OLLVM源码(VS2022)

windows环境下编译OLLVM 13.x VisualStudio配置下载OLLVM13.xollvm的使用 网上关于windows环境编译ollvm信息比较杂乱,在此编译成功的基础上做一下总结! VisualStudio配置 1,正常配置C桌面环境 2,在单个组件中选择用于Windows得C…

Go基础知识全面总结

文章目录 go基本数据类型bool类型数值型字符字符串 数据类型的转换运算符和表达式1. 算数运算符2.关系运算符3. 逻辑运算符4. 位运算符5. 赋值运算符6. 其他运算符运算符优先级转义符 go基本数据类型 bool类型 布尔型的值只可以是常量 true 或者 false。⼀个简单的例⼦&#…

Windows系统C++语言环境下通过SDK进行动作捕捉数据传输

NOKOV度量动作捕捉系统可以与市面上主流的操作系统和编程语言实现通信。可以在Windows系统C语言环境下通过SDK进行动作捕捉数据传输。 一、形影软件设置 1、实时模式和后处理模式都可以通过SDK传输数据。以后处理模式为例。将模式切换到后处理模式 2、加载一个刚体数据 3、打…

2.7V 到 5.5V、串行输入、电压输出、16 位数模转换器MS5541/MS5542

MS5541/MS5542 是一款单通道、 16 位、串行输入、电压 输出的数模转换器,采用 2.7V 至 5.5V 单电源供电,输出范围 为 0V 至 V REF 。在输出范围内保证单调性,在温度范围为 -40 C 至 85 C 能够提供 1LSB INL 的 14 位精度。…

2023年重水(氧化氘)市场规模:现状及未来发展趋

重水是水的一种,又称氘化水,它的摩尔质量比一般水要重。普通的水是由两个只具有质子的氢原子和一个氧16原子所组成,但在重水分子内的两个氢同位素氘,比一般氢原子有各多一个中子,因此造成重水分子的质量比一般水要重。…

双wan路由器介绍( 多wan口路由器用途,双wan网速叠加快吗)

​ 文章同款:https://www.key-iot.com/iotlist/sr500-15.html 对于工业领域来说,网络连接的可靠性和稳定性至关重要。双WAN口工业级路由器SR500是一款出色的解决方案,旨在提供强大的多线路冗余和负载均衡功能,以满足工业环境中的…

使用PHP实现对称加密和解密过程,真的是太简单了!

🚀 个人主页 极客小俊 ✍🏻 作者简介:web开发者、设计师、技术分享博主 🐋 希望大家多多支持一下, 我们一起进步!😄 🏅 如果文章对你有帮助的话,欢迎评论 💬点赞&#x1…

[yarn]yarn异常

一、运行一下算圆周率的测试代码,看下报错 cd /home/data_warehouse/module/hadoop-3.1.3/share/hadoop/mapreduce hadoop jar hadoop-mapreduce-examples-3.1.3.jar pi 1000 1000 后面2个数字参数的含义: 第1个1000指的是要运行1000次map任务 …

【Element】隐藏 el-table 展开行的箭头

需求 点击行展开行,隐藏箭头 方法 首先需求是点击行显示展开行 row-click"rowClick"const rowClick (row: any, column: any, event: any) > {console.log(row, column, event)if (multipleTable.value) {multipleTable.value.toggleRowExpansio…