广告
返回顶部
首页 > 资讯 > 数据库 >Redis中有哪些特殊的数据类型
  • 764
分享到

Redis中有哪些特殊的数据类型

2024-04-02 19:04:59 764人浏览 八月长安
摘要

这期内容当中小编将会给大家带来有关Redis中有哪些特殊的数据类型,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前言Reids 在 WEB 应用的开发中使用非常广泛,几乎

这期内容当中小编将会给大家带来有关Redis中有哪些特殊的数据类型,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

前言

Reids 在 WEB 应用的开发中使用非常广泛,几乎所有的后端技术都会有涉及到 Redis 的使用。Redis 种除了常见的字符串 String、字典 Hash、列表 List、集合 Set、有序集合 SortedSet 等等之外,还有一些不常用的数据类型,这里着重介绍三个。下面话不多说了,来一起看看详细的介绍吧。

BitMap

BitMap 就是通过一个 bit 位来表示某个元素对应的值或者状态, 其中的 key 就是对应元素本身,实际上底层也是通过对字符串的操作来实现。Redis 从 2.2 版本之后新增了setbit, getbit, bitcount 等几个 bitmap 相关命令。虽然是新命令,但是本身都是对字符串的操作,我们先来看看语法:

SETBIT key offset value

其中 offset 必须是数字,value 只能是 0 或者 1,咋一看感觉没啥用处,我们先来看看 bitmap 的具体表示,当我们使用命令 setbit key (0,2,5,9,12) 1后,它的具体表示为:

bytebit0bit1bit2bit3bit4bit5bit6bit7
byte010100100
byte101001000

可以看出 bit 的默认值是 0,那么 BitMap 在实际开发的运用呢?这里举一个例子:储存用户在线状态。这里只需要一个 key,然后把用户 ID 作为 offset,如果在线就设置为 1,不在线就设置为 0。实例代码:

//设置在线状态
$redis->setBit('online', $uid, 1);

//设置离线状态
$redis->setBit('online', $uid, 0);

//获取状态
$isOnline = $redis->getBit('online', $uid);

//获取在线人数
$isOnline = $redis->bitCount('online');

Geo

Redis 的 GEO 特性在 Redis 3.2 版本中推出, 这个功能可以将用户给定的地理位置信息储存起来, 并对这些信息进行操作。GEO 的数据结构总共有六个命令:geoadd、geopos、geodist、georadius、georadiusbymember、gethash,这里着重讲解几个。

1.GEOADD

GEOADD key longitude latitude member [longitude latitude member ...]

将给定的空间元素(纬度、经度、名字)添加到指定的键里面。 这些数据会以有序集合的形式被储存在键里面, 从而使得像 GEORADIUS 和 GEORADIUSBYMEMBER 这样的命令可以在之后通过位置查询取得这些元素。例子:

redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
(integer) 2

2.GEOPOS

GEOPOS key member [member ...]

从键里面返回所有给定位置元素的位置(经度和纬度),例子:

redis> GEOPOS Sicily Palermo Catania NonExisting
1) 1) "13.361389338970184"
 2) "38.115556395496299"

3.GEODIST

GEODIST key member1 member2 [unit]

返回两个给定位置之间的距离。如果两个位置之间的其中一个不存在, 那么命令返回空值。指定单位的参数 unit 必须是以下单位的其中一个:(默认为m)

m   表示单位为米。
km  表示单位为千米。
mi  表示单位为英里。
ft  表示单位为英尺。

redis> GEODIST Sicily Palermo Catania
"166274.15156960039"

4.GEORADIUS

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

以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。距离单位和上面的一致,其中后面的选项:

WITHDIST: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。距离的单位和用户给定的范围单位保持一致。
WITHCOORD: 将位置元素的经度和维度也一并返回。
WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。这个选项主要用于底层应用或者调试, 实际中的作用并不大。

redis> GEORADIUS Sicily 15 37 200 km WITHDIST
1) 1) "Palermo"
 2) "190.4424"
2) 1) "Catania"
 2) "56.4413"

HyperLogLog

Redis 的基数统计,这个结构可以非常省内存的去统计各种计数,比如注册 IP 数、每日访问 IP 数、页面实时UV)、在线用户数等。但是它也有局限性,就是只能统计数量,而没办法去知道具体的内容是什么。

当然用集合也可以解决这个问题。但是一个大型的网站,每天 IP 比如有 100 万,粗算一个 IP 消耗 15 字节,那么 100 万个 IP 就是 15M。而 HyperLogLog 在 Redis 中每个键占用的内容都是 12K,理论存储近似接近 2^64 个值,不管存储的内容是什么,它一个基于基数估算的算法,只能比较准确的估算出基数,可以使用少量固定的内存去存储并识别集合中的唯一元素。而且这个估算的基数并不一定准确,是一个带有 0.81% 标准错误的近似值。

这个数据结构的命令有三个:PFADD、PFCOUNT、PFMERGE

1.PFADD

redis> PFADD databases "Redis" "mongoDB" "Mysql"
(integer) 1

redis> PFADD databases "Redis"  # Redis 已经存在,不必对估计数量进行更新
(integer) 0

2.PFCOUNT

redis> PFCOUNT databases
(integer) 3

3.PFMERGE

PFMERGE desTKEy sourcekey [sourcekey ...]

将多个 HyperLogLog 合并为一个 HyperLogLog, 合并后的 HyperLogLog 的基数接近于所有输入 HyperLogLog 的可见集合的并集。合并得出的 HyperLogLog 会被储存在 destkey 键里面, 如果该键并不存在,那么命令在执行之前, 会先为该键创建一个空的 HyperLogLog 。

redis> PFADD NoSQL "Redis" "MonGoDB" "Memcached"
(integer) 1
redis> PFADD RDBMS "mysql" "MSsql" "postgresql"
(integer) 1
redis> PFMERGE databases nosql RDBMS
OK
redis> PFCOUNT databases
(integer) 6

上述就是小编为大家分享的Redis中有哪些特殊的数据类型了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: Redis中有哪些特殊的数据类型

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

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

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

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

下载Word文档
猜你喜欢
  • Redis中的特殊数据类型有哪些
    这篇文章将为大家详细讲解有关Redis中的特殊数据类型有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Redis除了5种基础数据类型,还有三种特殊的数据类型,分别是 ...
    99+
    2022-10-19
  • Redis中有哪些特殊的数据类型
    这期内容当中小编将会给大家带来有关Redis中有哪些特殊的数据类型,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前言Reids 在 Web 应用的开发中使用非常广泛,几乎...
    99+
    2022-10-18
  • php特殊数据类型有哪些
    php中特殊的数据类型有空值和资源两种空值php中空值是一种特殊类型的变量,只有一个NULL值,空值既不表示零,也不表示空格,空值区分大小写。资源php中资源是一种不是确切的特殊数据类型,常用于存储函数或对外部数据源进行交互,当php将资源...
    99+
    2022-10-13
  • redis中的三种特殊数据类型
    本篇内容主要讲解“redis中的三种特殊数据类型”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“redis中的三种特殊数据类型”吧!redis 三种特殊的数据类型...
    99+
    2022-10-18
  • Redis特殊数据类型bitmap位图
    目录Redis数据类型bitmap位图一、setbit二、getbit三、bitcountRedis数据类型bitmap位图 bitmap数据结构,是基于二进制位来进行操作记录的,只...
    99+
    2022-11-13
  • Redis的数据类型及特点有哪些
    小编给大家分享一下Redis的数据类型及特点有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Redis为我们提供了5种数据类...
    99+
    2022-10-19
  • Redis的特殊数据类型如何使用
    这篇文章主要介绍“Redis的特殊数据类型如何使用”,在日常操作中,相信很多人在Redis的特殊数据类型如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Redis的特殊数据类型如何使用”的疑惑有所帮助!...
    99+
    2023-06-29
  • 详解redis的三种特殊数据类型
    14天学习训练营导师课程: 郑为中《Vue和SpringBoot打造假日旅社管理系统》 努力是为了不平庸~ 学习有些时候是枯燥的,但收获的快乐是加倍的,欢迎记录下你的那些努力时刻(学习知识点/题解/项目实操/遇到的bug/等等),在分享的同...
    99+
    2023-08-20
    redis java 数据库
  • php变量的特殊类型有哪些
    本篇内容介绍了“php变量的特殊类型有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、资源(resource)资源是一种特殊的变量,保...
    99+
    2023-06-20
  • 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
  • go语言中的shell数据类型有哪些特殊的用途?
    Go语言中的Shell数据类型有哪些特殊的用途? 在Go语言中,Shell数据类型是一种非常重要的数据类型,它可以在Go语言中方便地进行文件操作、文本处理以及系统命令的执行。本文将介绍在Go语言中常见的Shell数据类型以及它们的一些特殊用...
    99+
    2023-06-25
    load shell 数据类型
  • Redis中有哪些数据类型
    本篇文章给大家分享的是有关Redis中有哪些数据类型,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.redis的5种数据类型: string...
    99+
    2022-10-18
  • Redis中数据类型有哪些
    Redis中数据类型有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。  Redis不是一个简单的键值对存储,它实际上是一个...
    99+
    2022-10-18
  • Redis三种特殊数据类型的具体使用
    目录一、HyperLogLog 基数统计1.1 什么是基数?1.2 使用基数统计的好处1.3 应用场景1.4 注意事项 1.5 基本命令1.6 使用二、Geospatial...
    99+
    2022-11-13
  • Redis特殊数据类型之Geospatial怎么应用
    今天小编给大家分享一下Redis特殊数据类型之Geospatial怎么应用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收...
    99+
    2022-10-19
  • Redis特殊数据类型之stream怎么应用
    这篇文章主要介绍“Redis特殊数据类型之stream怎么应用”,在日常操作中,相信很多人在Redis特殊数据类型之stream怎么应用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大...
    99+
    2022-10-19
  • redis的数据类型有哪些
    这篇文章给大家分享的是有关redis的数据类型有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、redis的5种数据类型: string 字符串(可以为整形、浮点型和字符串...
    99+
    2022-10-18
  • redis数据类型有哪些
    redis数据类型有哪些?相信有很多人都不太了解,今天小编为了让大家更加了解redis数据类型,所以给大家总结了以下内容,一起往下看吧。redis 主要有以下几种数据类型:stringhashlistset...
    99+
    2022-10-18
  • Redis中的数据类型都有哪些
    Redis中的数据类型都有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。STRINGSTRING是redis中最基本的数据类型,redis中的STRING类...
    99+
    2023-06-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作