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 地名 范围距离 单位
查看指定地名一定范围内能找到的地点
人生就像蒲公英,看似自由,其实身不由己。