Redis学习--- 三种特殊数据类型(GeospatialHyperloglogBitmap)

Posted 小样5411

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis学习--- 三种特殊数据类型(GeospatialHyperloglogBitmap)相关的知识,希望对你有一定的参考价值。

一、Geospatial地理位置

我们生活中打车会看到车离我们多少距离,附近的人距离,都可以用这个来推测两地之间的距离

geoadd key 纬度 精度 名称	#添加地理位置,也可以跟多个
geopos key 名称		#查看某个位置经纬度

注意:有效经度从-180到+180,有效纬度-85.0511到+85.0511
在这里插入图片描述

geodist key 名称1 名称2 km	#返回两个城市的距离(千米单位),不写km默认是米

在这里插入图片描述
在这里插入图片描述
由于定位不同区,所以略微不同,基本一致

如何获取附近的人距离?首先开启定位获取经纬度,就实时刷新可以算出距离

georadius key 经度 纬度 半径		#以经纬度为中心,半径为圆搜索

在这里插入图片描述
在这里插入图片描述
withdist可以返回到经纬度中心的距离,withcoord返回在返回内城市的定位信息,并且可以用count做一个筛选

georadiusbymember key 名称 半径		#以成员为半径查找,如以北京查找其周围1000km内的城市

在这里插入图片描述
Geo的基本常用命令就这些,然后Geo的底层其实就是ZSet实现,我们可以用ZSet命令操作geo,删除位置,geo没有提供,但是可以用zset进行删除
在这里插入图片描述

二、Hyperloglog基数统计

Hyperloglog在Redis中是基数统计的算法,基数就是不重复的元素,比如一个人访问一个网站多次,但还是算一个人,Hyperloglog优点就是占用内存非常小,比set去重方法远远小,是首选,Hyperloglog常常用于计数。但它错误率有0.81%,如果允许容错就用Hyperloglog,一点都不允许就用set

pfadd key 元素
pfcount key
pfmerge key key1 key2	#key为key1和key2合并的,即并集

在这里插入图片描述

三、Bitmap位图

Bitmap是位存储,比如疫情期间,可以14亿个0,0表示未感染,1表示感染,14亿bit≈166.89MB,其实占用还比较小,当然这里不需要自己打,配置一下。活跃用户和不活跃用户,打卡与未打卡,也可以用这个,用户每天打卡,365天就是365bit,365/8≈46B,也就是说一个用户一年只要46B存储就够了,十分小,省内存。所以这种只有两种状态的就可以用Bitmap。我们现在做一个一周打卡次数统计,公司经常需要做这个。

setbit key offset value		#offset可以理解成下标

offset 0-6正好表示7天
在这里插入图片描述

以上为本章内容

以上是关于Redis学习--- 三种特殊数据类型(GeospatialHyperloglogBitmap)的主要内容,如果未能解决你的问题,请参考以下文章

Redis学习--- 三种特殊数据类型(GeospatialHyperloglogBitmap)

详解redis的三种特殊数据类型

第124天学习打卡(Redis Set Hash Zset 三种特殊数据类型 事务 乐观锁)

Redis_三种特殊数据类型

Reids入门基本命令,学习使我快乐03,关于reidis 的一些操作命令(三种特殊数据类型)

Reids入门基本命令,学习使我快乐03,关于reidis 的一些操作命令(三种特殊数据类型)