Redis学习(八)三种特殊的数据类型

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets)。除了这五种常见的数据类型,还支持bitmaps,hyperloglog,geospatial三种特殊的数据类型。

geospatial数据类型常用命令

Redis在3.2版本中加入了地理空间(geospatial)以及索引半径查询的功能,主要用在需要地理位置的应用上,将指定的地理空间位置(纬度、经度、名称)添加到指定的key中。这些数据将会存储到sorted set这样的目的是为了方便使用GEORADIUS或者GEORADIUSBYMEMBER命令对数据进行半径查询等操作。

  • geoadd 添加一个或多个地理位置元素到一个key中
    Redis学习(八)三种特殊的数据类型_第1张图片
    可以发现数据是以有序集合(sorted set)的形式存储的,我们输入的经纬度,最终是一串整数。

  • geodist 返回两个给定位置之间的距离。如果两个位置之间的其中一个不存在, 那么命令返回空值。如果不指定单位,默认单位是米。参数unit 必须是以下其中一个:1.m(米)2.km(千米)3.mi(英里)4.ft(英尺)
    Redis学习(八)三种特殊的数据类型_第2张图片

  • geohash 返回一个或多个位置元素的 Geohash 表示
    Redis学习(八)三种特殊的数据类型_第3张图片

  • geopos 返回所有给定位置元素的位置
    Redis学习(八)三种特殊的数据类型_第4张图片

  • georadius 以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。withdist:在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。 距离的单位和用户给定的范围单位保持一致。withcoord:将位置元素的经度和维度也一并返回。withhash: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大。
    Redis学习(八)三种特殊的数据类型_第5张图片

  • georadiusbymember 这个命令和 GEORADIUS 命令一样, 都可以找出位于指定范围内的元素, 但是 GEORADIUSBYMEMBER 的中心点是由给定的位置元素决定的, 而不是像 GEORADIUS 那样, 使用输入的经度和纬度来决定中心点指定成员的位置被用作查询的中心。
    Redis学习(八)三种特殊的数据类型_第6张图片

hyperloglog数据类型常用命令

HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。
什么是基数?比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5。 基数估计就是在误差可接受的范围内,快速计算基数。

  • pfadd 添加指定元素到 HyperLogLog 中
  • pfcount 返回给定 HyperLogLog 的基数估算值,如果多个 HyperLogLog 则返回基数估值之和
  • pfmerge 将多个 HyperLogLog 合并为一个 HyperLogLog
    Redis学习(八)三种特殊的数据类型_第7张图片

bitmaps数据类型常用命令

Bitmaps本身不是一种数据结构,实际上它就是字符串,但是他可以对字符串的位进行操作。Bitmaps可以认为是以位为基本单位的数组,数组的每个单元只能存储0和1,数组的下标在Bitmaps中叫做偏移量。

  • setbit 设置值
  • getbit 获取值
  • bitcount 获取指定范围内1的数量
    Redis学习(八)三种特殊的数据类型_第8张图片

你可能感兴趣的:(Redis)