Redis的特殊数据类型

1. BitMap(Redis2.2版本之后)

  内部编码为二进制字符串

  1. 命令:setbit key offset value

  offset 必须是数字代表坐标,从0开始计数;value只能为0或1

  底层初始化一个全为0的字符串(默认32位),根据offset的将对应位置的值更改为value,用于保存二进制

  2. 命令:bitcount key

  统计key下所有非0的个数

  3. 命令:bitop and target source1 source2(Redis2.6.0版本之后)

  对source1和source2做与操作,若两者长度不等,缺少部分自动补零,生成新键target

  优点:数据结构简单,占用内存很少,操作速度快。譬如以用户id作为offset,当访问过本网站,对应的value设置为1,存储一亿个用户的访问数据,消耗内存12.5M

2.  HyperLogLog(Redis2.8版本之后)

  内部编码分为稀疏型和密集型

  1. 命令:pfadd key value

  插入键值,如果插入成功(对应键的值没有重复)返回1,否则返回0

  2. 命令 pfcount key

  统计指定key下,对应值的个数

  3. 命令 pfmerge target source1 source2

  合并source1和source2代表的键值对,会对结果去重,生成新的键target。

  用途:记录网站IP的注册数,每日访问的IP数,在线用户人数

  缺点:只能看到统计信息,无法看到值对象

3. Geospatial(Redis3.2版本之后)

  用来保存地理位置,计算距离或者根据半径计算位置。基于Sorted Set

  1. 命令:GEOADD key 经度 维度 地名

  把具体的位置存到指定的key

  2. 命令:ZRANG key 0 -1

  查询第一个到倒数第一个元素

  3. 命令 GEODIST key 地名1 地名2 单位(m/km)

  查看地名1和地名2之间的距离

  4. 命令 GEOPOS key 地名

  查看指定地名的经纬度

  5. 命令 GEORADIUS key 经度 维度 范围距离 单位

  查看指定经纬度一定范围内能找到的地点

  6. 命令 GEORADIUSBYMEMBER key 地名 范围距离 单位

  查看指定地名一定范围内能找到的地点

 

 

 

 

  

posted @ 2021-03-08 15:06  walker993  阅读(89)  评论(0编辑  收藏  举报