Redis学习(4)


前言

我们学习完redis的常用五种数据类型,其实就已经能满足日常的开发需求了,也就是说我们已经redis入门。但是我们不仅仅要学会redis,还要学精redis。所以说今天我们来学习下redis的三种特殊的数据类型。


一、geospatial地理位置

Redis的geo查询地理位置。可以推算地址位置的信息。
而且geo查询非常简单,只有六个命令。

geoadd 添加地址位置
	规则:两级的数据是无法添加的,我们一般是下载数据,利用程序一次导入
	有效的经度是从-180180,有效的纬度是从-85.0511277885.05112778,超过范围则会报错
	key:(维度、经度、名称)
	geoadd key longitude(纬度) latitude(经度) member[longitude(经度) latitude(纬度) member...]
	
geodist 返回两个给定位置之间的距离
	单位 : m米 km千米 mi英里 ft英尺 
	geodist key member1 member2 [unit](单位,默认是m)
	
geohash 返回一个或多个未知元素的geohash表示
	返回11个字符串的geohash字符串
	将二维的经纬度转换为一维的字符串,两个字符串越接近,距离越近、
	geohash key member[member...]

geopos 获取一个或多个城市的经纬度
	geopos key member[member...]

georadius 以给定的经纬度为中心,找出某一半径内的元素
	附近的人:通过半径来查询所有人的定位
	georadius key longitude latitude radis m|km|ft|mi [withcoord](经纬度) [withdist](直线距离) [count 1](只查询一个)
	
georadiusbymember 找出位于指定范围内的元素,中心点是由给定的位置元素决定 
	georadiusbymember key longitude latitude radis m|km|ft|mi  [withcoord](经纬度) [withdist](直线距离) [count 1](只查询一个)

geo的底层原理其实就是Zset,所以我们可以通过zset命令来操作geo,例如

zrem key member[member...] 移除城市信息

二、hyperloglog基数

基数介绍:不重复的元素,可以接受误差。

​redis hyperloglog 是一种基数统计的算法。

​优点:占用的内存是固定的,2的64次方不同的元素存储,只需要耗费12kb的内存。从内存角度来比较,hyperloglog是首选。

​应用: 网页的UV(一个人访问网站多次,但还是算作一个人)
传统的方式是使用set保存用户的id,然后统计set集合中的元素的个数作为标准判断。

​redis hyperloglog 算法只有0.81%的错误率 统计网页UV任务,是可以忽略不计的

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

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

pfmerge destkey sourcekey[sourcekey...]  合并两组(不含重复值,并集)

二、bitmap位存储

应用:用户状态(活跃、不活跃),登录状态(登录、未登录) 等两个状态的,都可以使用bitmaps。
bitmap位图,是一种数据结构。

setbit key offset(当前位) value(状态) 设置某位的状态

getbit key offset  查看某个位置的状态

bitcount key [start stop] 统计某种状态的数量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值