美文网首页
Redis学习笔记(二)——三大特殊数据类型

Redis学习笔记(二)——三大特殊数据类型

作者: 棉花糖7 | 来源:发表于2021-06-07 10:18 被阅读0次

2.1 geospatial 地理位置

geospatial 地理位置 这个功能可以推算地理位置的信息,两地之间的距离,方圆几里的人

geoadd [key] [经度] [维度] [地点名称] 添加位置

注意经纬度不可以超过取值范围 ,否则会报错

geopos [key] [value] 查询value的经纬度

geodist [key] [pos1] [pos2] 查询pos1和pos2之间的直线距离,默认距离是米,可以改成km,mi,ft

georadius 以给定的经纬度为中心,找出某一半径以内的元素

georadius [key] [longitude] [latitude]

[radius] [m/km/ft/mi] [withcoord 可选] [withdist可选] [count 数字 可选] [asc/desc可选]

以某个经度纬度为中心,查找radius范围内的元素,同时输出坐标、显示到中心的直线距离,筛选出几个结果,升序或者降序

georadiusbymember [key] [member] [radius]

[m/km/ft/mi] [withcoord 可选] [withdist可选] [count 数字 可选] [asc/desc可选]

以某个指定元素为中心,查找radius范围内的元素,同时输出坐标、显示到中心的直线距离,筛选出几个结果,升序或者降序

geohash 返回一个或多个位置元素的11个字符的Geohash字符串

geohash [key] [member]

geo的底层实现原理就是zset!我们可以使用zset命令来操作geo

zrange 查看地图中全部的元素

zrem 移除地图中的某个元素

2.2 hyperloglog基数统计

hyperloglog 如果允许容错,就使用该方法。不允许容错就使用set

什么是基数?A{1,3,5,7,8,7} B{1,3,5,7,8} 基数(表示不重复的元素)=5,可以接受误差

hyperloglog 基数统计的算法

优点:占用的内存是固定的,只要12KB内存,如果从内存角度来比较的话,首选hyperloglog

网页UV(一个人访问一个网站多次,但是还是算作一个人)

传统的方式,用set保存用户id,然后就可以统计set中的元素数量作为评判标准

这个方式如果保存大量的用户id,就会比较麻烦,我们的目的是为了计数,不是保存用户id

0.81的错误率,统计UV任务,可以忽略不计

pfadd [key] [element....]创建元素

pfcount [key] 统计元素的基数数量

pfmerge [destination] [src1] [src2].. 合并数据1,数据2 到目的数组中

2.3 bitmap位存储

统计用户信息,活跃/不活跃, 打卡/未打卡,等等两个状态的

bitmap是位图,数据结构,都是操作二进制位进行记录的,就只有0 和 1 两个状态

365天 = 365bit 1Byte

= 8bit 46个字节左右

setbit [key] [offset] [0/1] 设置某个元素为0/1

getbit [key] [name] 获取某个元素的值

bitcount [key] [start] [end] 获取某个区间为1的个数,不包括start 和 end 在内

相关文章

网友评论

      本文标题:Redis学习笔记(二)——三大特殊数据类型

      本文链接:https://www.haomeiwen.com/subject/snhheltx.html