广告
返回顶部
首页 > 资讯 > 数据库 >redis中的三种特殊数据类型
  • 951
分享到

redis中的三种特殊数据类型

2024-04-02 19:04:59 951人浏览 泡泡鱼
摘要

本篇内容主要讲解“Redis中的三种特殊数据类型”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“redis中的三种特殊数据类型”吧!redis 三种特殊的数据类型

本篇内容主要讲解“Redis中的三种特殊数据类型”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“redis中的三种特殊数据类型”吧!

redis 三种特殊的数据类型

  • Geospatial 地理位置

  • Hyperloglog 基数统计

  • Bitmap 位图场景

Geospatial 地理位置

redis 3.2 版本就推出了  Geospatial

官方文档上可以详细的看到用法:

https://www.redis.net.cn/order/3685.html

redis中的三种特殊数据类型

Geospatial 可以使用在如下场景:

  • 附近的人

  • 打车计算距离

  • 朋友定位

  • 等一系列跟定位有关的场景

Geospatial 只有 六个命令

  • GEOADD

  • GEODIST

  • GEOHASH

  • GEOPOS

  • GEORADIUS

  • GEORADIUSBYMEMBER

GEOADD

添加地理位置

  • 有效的经度从-180度到180度。

  • 有效的纬度从-85.05112878度到85.05112878度。

当坐标位置超出上述指定范围时,该命令将会返回一个错误。

  • GEOADD key [NX|XX] [CH] longitude latitude member [longitude latitude member ...]

添加经纬度,城市名

127.0.0.1:6379> GEOADD city 113.087559 28.251818 changsha
(integer) 1
127.0.0.1:6379> GEOADD city 114.064552 22.548457 shenzhen
(integer) 1
127.0.0.1:6379> GEOADD city 104.087045 30.666416 chengdu
(integer) 1
127.0.0.1:6379> GEOADD city 118.802422 32.064653 nanjing
(integer) 1
127.0.0.1:6379> GEOADD city 106.558434 29.568996 chongqing
(integer) 1
127.0.0.1:6379> GEOADD city 121.463615 31.195908 shanghai
(integer) 1
127.0.0.1:6379> GEOADD city 117.208093 39.091103 tianjin
(integer) 1

GEOPOS

  • GEOPOS key member [member ...]

获取指定城市的经纬度信息

127.0.0.1:6379> GEOPOS city changsha
1) 1) "113.08755666017532349"
   2) "28.25181827470789386"
127.0.0.1:6379> GEOPOS city tianjin
1) 1) "117.20809489488601685"
   2) "39.0911021322545551"

GEODIST

  • GEODIST key member1 member2 [m|km|ft|mi]

其中有如下 4 个单位:

m :米

km:公里

ft:英尺

mi:英里

获取两个城市之间的距离

127.0.0.1:6379> GEODIST city changsha tianjin
"1264101.6876"
127.0.0.1:6379> GEODIST city changsha tianjin km
"1264.1017"
127.0.0.1:6379> GEODIST city changsha shenzhen km
"641.9034"

GEOHASH

  • GEOHASH key member [member ...]

返回一个或者多个GEOHASH 表示的元素, 返回 11 个字符 Geohash 字符串

127.0.0.1:6379> GEOHASH city changsha
1) "wt02tr5fg00"
127.0.0.1:6379> GEOHASH city changsha beijing
1) "wt02tr5fg00"
2) (nil)
127.0.0.1:6379> GEOHASH city changsha beijing tianjin chongqing
1) "wt02tr5fg00"
2) (nil)
3) "wwgq7hk64t0"
4) "wm7b0yc7zk0"

GEORADIUS

  • GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count [ANY]] [ASC|DESC] [STORE key] [STOR

指定经纬度作为原点,指定半径,查询在指定范围内的城市,这些城市都是在我们自己的集合里面

127.0.0.1:6379> GEORADIUS city 110 30 500 m
(empty array)
127.0.0.1:6379> GEORADIUS city 110 30 500 km
1) "chongqing"
2) "changsha"
127.0.0.1:6379> GEORADIUS city 110 30 1000 km
1) "chongqing"
2) "chengdu"
3) "shenzhen"
4) "changsha"
5) "nanjing"
127.0.0.1:6379> GEORADIUS city 110 30 700 km withcoord
1) 1) "chongqing"
   2) 1) "106.55843228101730347"
      2) "29.56899626404301529"
2) 1) "chengdu"
   2) 1) "104.08704489469528198"
      2) "30.6664164635846177"
3) 1) "changsha"
   2) 1) "113.08755666017532349"
      2) "28.25181827470789386"
127.0.0.1:6379> GEORADIUS city 110 30 700 km withdist
1) 1) "chongqing"
   2) "335.6530"
2) 1) "chengdu"
   2) "572.3911"
3) 1) "changsha"
   2) "357.4711"
127.0.0.1:6379> GEORADIUS city 110 30 700 km withhash
1) 1) "chongqing"
   2) (integer) 4026059435699931
2) 1) "chengdu"
   2) (integer) 4026137831798506
3) 1) "changsha"
   2) (integer) 4050903792284309

GEORADIUSBYMEMBER

  • GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count [ANY]] [ASC|DESC] [STORE key] [STOREDIST key]

找出位于指定元素周围的城市

127.0.0.1:6379> GEORADIUSBYMEMBER city tianjin 1000 km
1) "nanjing"
2) "tianjin"
3) "shanghai"
127.0.0.1:6379> GEORADIUSBYMEMBER city tianjin 500 km
1) "tianjin"
127.0.0.1:6379> GEORADIUSBYMEMBER city tianjin 5000 km
1) "chongqing"
2) "chengdu"
3) "shenzhen"
4) "changsha"
5) "shanghai"
6) "nanjing"
7) "tianjin"

Geospatial 底层的原理就是使用 Zset 有序集合来实现的,我们可以使用 Zset 有序集合的命令来操作 Geo ,咱们是用 Zset 的指令来感受一波

127.0.0.1:6379> ZRANGE city 0 -1
1) "chongqing"
2) "chengdu"
3) "shenzhen"
4) "changsha"
5) "shanghai"
6) "nanjing"
7) "tianjin"
127.0.0.1:6379> ZCARD city
(integer) 7

Hyperloglog 基数统计

基数是个啥?

基数,就是不重复的数,例如:

A = {1,2,3,4,5}

B = {2,3,4,5,6}

那么 A 和 B 的取并集的基数就是 6

简介

Hyperloglog 是 redis 2.8.9 版本开始有的这种数据结构

redis hyperloglog 基数统计也是一种算法

例如有这样的应用场景:

  • 网页访问人数统计,同一个用户多次访问网站,也是只算作 1

    传统的方式是使用 set 集合的方式来保存 id,统计 set 里面 id 的个数,来计算人数

    这种方式也没有问题,但是若数据量很大的时候,就会非常麻烦,因为我们拿 id 是没有用的,我们只需要计数而已

优点

redis中的三种特殊数据类型

      Hyperloglog  占用的内存空间是固定的,2^16 次方,只需要占用 12 KB 内存,从内存的角度来技术选型,Hyperloglog  是首选哦

  • PFADD key element [element ...]

向 Hyperloglog  中添加一个或者多个元素

  • PFMERGE desTKEy sourcekey [sourcekey ...]

将多个 Hyperloglog  取并集,得到一个结果 Hyperloglog ,里面的数据是不会重复的

127.0.0.1:6379> PFADD myhash  1 2 3 4 5 6 7 8
(integer) 1
127.0.0.1:6379> pfadd myhash3 3 4 5 6 7 8 9 0 88 99
(integer) 1
127.0.0.1:6379> PFMERGE res myhash myhash3
OK
127.0.0.1:6379> PFCOUNT res
(integer) 12
127.0.0.1:6379> PFCOUNT myhash
(integer) 8
127.0.0.1:6379> PFCOUNT myhash3
(integer) 10

Bitmaps 位图场景

Bitmaps 位图,位存储

一般用于,统计用户信息,活跃,不活跃,

登录,不登录

打卡,不打卡 等等,两种状态

Bitmaps 位图,也是一种数据结构,是操作二进制的方式来进行记录的,只有 0  和 1 两种状态

redis中的三种特殊数据类型

例如我们举个例子,来记录着一周每天的心情,1 是开心,0 是沮丧

  • SETBIT key offset value

设置 bit 位的值

  • GETBIT key offset

获取 bit 位的值

127.0.0.1:6379> SETBIT week 0 1
(integer) 0
127.0.0.1:6379> SETBIT week 1  1
(integer) 0
127.0.0.1:6379> SETBIT week 2 1
(integer) 0
127.0.0.1:6379> SETBIT week 3 0
(integer) 0
127.0.0.1:6379> SETBIT week 4 0
(integer) 0
127.0.0.1:6379> SETBIT week 5 1
(integer) 0
127.0.0.1:6379> SETBIT week 6 1
(integer) 0
127.0.0.1:6379> GETBIT week 6
(integer) 1
127.0.0.1:6379> GETBIT week 5
(integer) 1

到此,相信大家对“redis中的三种特殊数据类型”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

您可能感兴趣的文档:

--结束END--

本文标题: redis中的三种特殊数据类型

本文链接: https://www.lsjlt.com/news/59612.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • redis中的三种特殊数据类型
    本篇内容主要讲解“redis中的三种特殊数据类型”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“redis中的三种特殊数据类型”吧!redis 三种特殊的数据类型...
    99+
    2022-10-18
  • 详解redis的三种特殊数据类型
    14天学习训练营导师课程: 郑为中《Vue和SpringBoot打造假日旅社管理系统》 努力是为了不平庸~ 学习有些时候是枯燥的,但收获的快乐是加倍的,欢迎记录下你的那些努力时刻(学习知识点/题解/项目实操/遇到的bug/等等),在分享的同...
    99+
    2023-08-20
    redis java 数据库
  • Redis三种特殊数据类型的具体使用
    目录一、HyperLogLog 基数统计1.1 什么是基数?1.2 使用基数统计的好处1.3 应用场景1.4 注意事项 1.5 基本命令1.6 使用二、Geospatial...
    99+
    2022-11-13
  • Redis中的特殊数据类型有哪些
    这篇文章将为大家详细讲解有关Redis中的特殊数据类型有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Redis除了5种基础数据类型,还有三种特殊的数据类型,分别是 ...
    99+
    2022-10-19
  • Redis中有哪些特殊的数据类型
    这期内容当中小编将会给大家带来有关Redis中有哪些特殊的数据类型,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前言Reids 在 Web 应用的开发中使用非常广泛,几乎...
    99+
    2022-10-18
  • Redis特殊数据类型bitmap位图
    目录Redis数据类型bitmap位图一、setbit二、getbit三、bitcountRedis数据类型bitmap位图 bitmap数据结构,是基于二进制位来进行操作记录的,只...
    99+
    2022-11-13
  • Redis的特殊数据类型如何使用
    这篇文章主要介绍“Redis的特殊数据类型如何使用”,在日常操作中,相信很多人在Redis的特殊数据类型如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Redis的特殊数据类型如何使用”的疑惑有所帮助!...
    99+
    2023-06-29
  • Redis特殊数据类型Geospatial地理空间
    目录Redis特殊数据类型Geospatial地理空间一、geoadd二、geopos三、geodist四、georadius五、georadiusbymember六、geohash...
    99+
    2022-11-13
  • Redis特殊数据类型Geospatial怎么使用
    这篇文章主要介绍“Redis特殊数据类型Geospatial怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Redis特殊数据类型Geospatial怎么使用”文章能帮助大家解决问题。Redi...
    99+
    2023-06-30
  • Redis特殊数据类型之Geospatial怎么应用
    今天小编给大家分享一下Redis特殊数据类型之Geospatial怎么应用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收...
    99+
    2022-10-19
  • Redis特殊数据类型之stream怎么应用
    这篇文章主要介绍“Redis特殊数据类型之stream怎么应用”,在日常操作中,相信很多人在Redis特殊数据类型之stream怎么应用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大...
    99+
    2022-10-19
  • Redis特殊数据类型HyperLogLog基数统计算法讲解
    目录Redis HyperLogLog基数统计一、pfadd二、pfcount三、pfmergeRedis HyperLogLog基数统计 HyperLogLog 是用来做基数统计的...
    99+
    2022-11-13
  • php特殊数据类型有哪些
    php中特殊的数据类型有空值和资源两种空值php中空值是一种特殊类型的变量,只有一个NULL值,空值既不表示零,也不表示空格,空值区分大小写。资源php中资源是一种不是确切的特殊数据类型,常用于存储函数或对外部数据源进行交互,当php将资源...
    99+
    2022-10-13
  • redis的五种数据类型
    redis的五种数据类型redis客户端建立./redis-cli -h 192.168.1.22 -p 6380 --raw1.String应用场景:统计网站访问数量、当前在线人数、微博数、粉丝数等,全局...
    99+
    2022-10-18
  • 特殊的数据类型的介绍 in postgresql
    hstore是一种比较特殊的数据类型,用来存储具有多个属性值的数据。acquire key/value       ==> reference: https:/...
    99+
    2022-10-18
  • 如何概述特殊的VB.NET数据类型
    这篇文章将为大家详细讲解有关如何概述特殊的VB.NET数据类型,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。我们曾经为大家介绍过几种常见的VB.NET数据类型,大家也应该能通过我们介绍的内容...
    99+
    2023-06-17
  • python day3特殊数据类型是怎样的
    这期内容当中小编将会给大家带来有关python day3特殊数据类型是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。集合:list声明方式:a=[1,2,3,4](里面也可以是字符串,浮点等等)按照...
    99+
    2023-06-02
  • redis有几种数据类型
    今天就跟大家聊聊有关redis有几种数据类型,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Redis支持五种数据类型:string(字符串),has...
    99+
    2022-10-18
  • 数据库中有哪三种类型
    这篇文章给大家分享的是有关数据库中有哪三种类型的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。数据库类型有:1、关系数据库,有【MySQL、MariaDB】;2、非关系型数据库,【Cassandra、MongoDB...
    99+
    2023-06-06
  • redis中有多少种数据类型
    这篇文章将为大家详细讲解有关redis中有多少种数据类型,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、redis的5种数据类型: string 字符串(可以为整形、...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作