前言
Redis中的这三个数据类型在很多开源的项目中都有使用到,除了日常开发中使用Java去实现某些功能外,还可以通过这些特殊的数据类型进行实现,本文也简单介绍了这三种数据类型使用的场景,可以帮助读者在开发中实现功能提供新的思路。
一、Geospatial(地理位置)
Geospatial类型Redis官方文档-Redis geospatial | Redis
Redis中的Geospatial是一个用于地理空间数据的功能模块,它可以存储和查询地理坐标、半径、矩形、多边形等地理空间对象。通过使用Geospatial,您可以对地理空间对象进行各种操作,例如计算两个地点之间的距离、查找位于给定半径内的地点、查找位于给定矩形或多边形内的地点等。
基础命令
- GEOADD adds a location to a given geospatial index (note that longitude comes before latitude with this command).
- GEOSEARCH returns locations with a given radius or a bounding box.
命令演示
1. 添加地理位置
Geospatial规则: 两级无法直接添加,我们一般会下载城市数据,直接通过java序一次性导入!
有效的经度从-180度到180度. 有效的纬度从-85.05112878度到85.05112878度。
参数:key 值:经度 纬度 名称
2. 获取城市地理位置
3. 计算两个城市之间的距离
4. 以给定的经纬度为中心,找出某一半径内的元素
5. 以城市为中心寻找其它城市
6. 将经纬度转化为字符串
7. 使用Zset的命令来操作Geospatial
==Geospatial的底层实现原理就是Zset,可以用Zset命令来操作Geospatial==
二、 HyperLogLog(基数统计)
HyperLogLog类型Redis官方文档-HyperLogLog | Redis
HyperLogLog常用于大数据量的统计,比如页面访问量统计或者用户访问量统计。其实现最多使用 12 KB,并提供 0.81% 的标准误差。
什么是基数?
基数在数学中是集合论中刻画任意集合大小的一个概念。它表示一个集合中不同元素的个数。例如,集合{1, 2, 3, 3, 4, 5, 5, 6, 6, 6}中有9个元素,但其中不重复的元素只有1、2、3、4、5、6,所以它的基数是6。
基础命令
- PFADD adds an item to a HyperLogLog.
- PFCOUNT returns an estimate of the number of items in the set.
- PFMERGE combines two or more HyperLogLogs into one.
命令演示
1. 创建元素,并统计其中的个数
2. 合并元素
三、BitMaps
BitMaps类型Redis官方文档-Redis bitmaps | Redis
Redis中的BitMaps是一种基于位图的数据结构,它允许用户将位图存储为字符串,并对其进行位操作。
基础命令
- SETBIT sets a bit at the provided offset to ==0 or 1==.
- GETBIT returns the value of a bit at a given offset.
- BITOP lets you perform bitwise operations against one or more strings.
命令演示