提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


文章目录

前言

一、bitmaps类型

1.setbit命令

 2.getbit命令

 3.bitcount命令

 4.bitop命令

二、Hyperloglog数据类型

1.pfadd命令

2.pfcount命令 

3pfmerge命令

 Geospatial数据类型

1.geoadd命令

2.geopos命令

3.geodist命令

总结



前言

本文介绍了几种redis中的数据类型


一、bitmaps类型

这个类型主要进行位操作,可以将bitmaps视为一个只存放0和1的字符串类型数组

从redis 获取 redis获取最新数据_perl

Bitmaps中有两个很重要的参数,即偏移量offset,以及字节的概念。在计算机中一个字节bit有8位组成。

常用命令:

1.setbit命令

1.创建一个bitmaps
setbit [key] [offset] [value].
创建bitmaps的时候需要注意一开始的偏移量不应过大,否则容易造成初始化缓慢,造成redis的阻塞

 

从redis 获取 redis获取最新数据_perl_02

 2.getbit命令

2.获得bitmaps中的值
getbit [key] [offset]
这个操作可以获得某个偏移量的值

从redis 获取 redis获取最新数据_redis_03

 3.bitcount命令

在学习第三个命令的时候需要对字节有一定概念,在计算机中,一个字节占8位二进制数。例如字符abc,对应的ASCII码分别为97,98,99。对应的二进制位就是01100001、 01100010和01100011

3.统计某两个字节中1的个数,这个命令非常使用
bitcount [key] [start] [end]
注意这其中的start与end表示字节,下面举例说明
加入一个bitmaps的值为 00000000 10001000 0101010101 11110000
bitcount [key] 0 1就表示第一个字节与第二个字节中1的个数 即返回2
bitcount [key] 1 2就表示第二个字节与第三个字节中1的个数 即返回6
如果不加start 与 end参数就表示查看所有bitmaps中1的个数

 在上文中我们创建了一个bitmaps并且将其的第0,3,5,13设置位1.则这个bitmaps内部就是

10010100 00001000

 

从redis 获取 redis获取最新数据_数据库_04

 4.bitop命令

4.bitop 可以做两个bitmaps集合的交集或者并集操作
bitop [operation] [destkey] [key1] [key2]
bitop会创建一个新的bitmaps存放key1 key2集合交集或者并集后留下来的结果
BITOP AND destkey srckey1 … srckeyN ,对一个或多个 key 求逻辑与,并将结果保存到 destkey
BITOP OR destkey srckey1 … srckeyN,对一个或多个 key 求逻辑或,并将结果保存到 destkey
BITOP XOR destkey srckey1 … srckeyN,对一个或多个 key 求逻辑异或,并将结果保存到 destkey
BITOP NOT destkey srckey,对给定 key 求逻辑非,并将结果保存到 destkey

BitMaps的使用场景:当活跃的用户量很大的时候使用bitmaps比较合适,当用户量比较小的时候应该使用set数据类型

二、Hyperloglog数据类型

        HyperLogLog类型用于计算基数使用,基数(元素集合去重之后的结构)。比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5。 基数估计就是在误差可接受的范围内,快速计算基数。

        这个工作其实在set集合与hash中可以实现,但是hyperloglog的效率以及使用的内存都非常的小,hyperloglog只需用占用12k的空间就可以进行2^64个元素的去重处理。

常用命令

1.pfadd命令

1.创建hyperloglog并且添加元素
pfadd [key] [element...]
一次可以添加多个元素,并且自动删掉重复的元素

从redis 获取 redis获取最新数据_perl_05

2.pfcount命令 

2.pfcount查看hyperloglog中元素个数
pfcount key

3pfmerge命令

3.pfmerge合并操作
pfmeger可以将两个hyperloglog集合进行去重并且合并
 pfmerge new:program program program2
 这个命令执行完成后会将 program与program2的所有元素去重且合并 添加到new:program中

从redis 获取 redis获取最新数据_从redis 获取_06

 Geospatial数据类型

Redis 3.2 中增加了对GEO类型的支持。GEO,Geographic,地理信息的缩写。该类型,就是元素的2维坐标,在地图上就是经纬度。redis基于该类型,提供了经纬度设置,查询,范围查询,距离查询,经纬度Hash等常见操作。

常用命令

1.geoadd命令

创建geospatial geoadd [key] [精度 维度] [城市名]

示例代码:

geoadd China:city 119.34 26.01 shanghai
geoadd China:city 116.45 39.96 beijing

2.geopos命令

通过城市名取得经纬度信息 geopos [key] [城市名]

geopos China:city shanghai
===>119.3 
===>26.0

3.geodist命令

计算两地的直线距离 geodist [key] [城市1] [城市2] [计算结果的单位]

127.0.0.1:6379> geodist china:city beijing shanghai
"1071417.5676"

总结

本篇文章大致介绍了三种redis中的新数据类型