Redis中的类型这三个数据类型在很多开源的项目中都有使用到,除了日常开发中使用Java去实现某些功能外,特殊还可以通过这些特殊的类型数据类型进行实现,本文也简单介绍了这三种数据类型使用的特殊场景,可以帮助读者在开发中实现功能提供新的类型思路。
Geospatial类型Redis官方文档-Redis 类型geospatial | Redis
Redis中的Geospatial是一个用于地理空间数据的功能模块,它可以存储和查询地理坐标、特殊半径、类型矩形、特殊多边形等地理空间对象。通过使用Geospatial,您可以对地理空间对象进行各种操作,例如计算两个地点之间的距离、查找位于给定半径内的地点、查找位于给定矩形或多边形内的地点等。
基础命令
命令演示
Geospatial规则: 两级无法直接添加,我们一般会下载城市数据,直接通过java序一次性导入!
有效的经度从-180度到180度. 有效的纬度从-85.05112878度到85.05112878度。
参数:key 值:经度 纬度 名称
127.0.0.1:6379> GEOADD china:city 116.40 39.90 beijin(integer) 1127.0.0.1:6379> GEOADD china:city 121.47 31.23 shanghai(integer) 1127.0.0.1:6379> GEOADD china:city 106.50 29.53 chognqin 114.05 22.52 shenzheng(integer) 2127.0.0.1:6379> GEOADD china:city 120.16 30.24 hangzhou 108.96 34.26 xian(integer) 2
127.0.0.1:6379> GEOPOS china:city beijin #获取城市的经度和纬度1) 1) "116.39999896287918091" 2) "39.90000009167092543"127.0.0.1:6379> GEOPOS china:city shanghai1) 1) "121.47000163793563843" 2) "31.22999903975783553"
127.0.0.1:6379> GEODIST china:city beijin shanghai"1067378.7564"127.0.0.1:6379> GEODIST china:city beijin shanghai km #单位有m、km、mi、ft"1067.3788"
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km #经度110,纬度30为中心,寻找半径1000km以内的城市1) "chognqin"2) "xian"3) "shenzheng"4) "hangzhou"127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km count 2 #限制查询的数量1) "chognqin"2) "xian"127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km withcoord #显示经度纬度1) 1) "chognqin" 2) 1) "106.49999767541885376" 2) "29.52999957900659211"2) 1) "xian" 2) 1) "108.96000176668167114" 2) "34.25999964418929977"3) 1) "shenzheng" 2) 1) "114.04999762773513794" 2) "22.5200000879503861"4) 1) "hangzhou" 2) 1) "120.1600000262260437" 2) "30.2400003229490224"
127.0.0.1:6379> GEORADIUSBYMEMBER china:city beijin 1000 km1) "beijin"2) "xian"
127.0.0.1:6379> GEOHASH china:city beijin1) "wx4fbxxfke0"
==Geospatial的底层实现原理就是Zset,可以用Zset命令来操作Geospatial==
127.0.0.1:6379> ZRANGE china:city 0 -11) "chognqin"2) "xian"3) "shenzheng"4) "hangzhou"5) "shanghai"6) "beijin"127.0.0.1:6379> ZREM china:city xian(integer) 1127.0.0.1:6379> ZRANGE china:city 0 -11) "chognqin"2) "shenzheng"3) "hangzhou"4) "shanghai"5) "beijin"
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。
基础命令
命令演示
127.0.0.1:6379> PFADD mykey a b c d e f g h i j #创建一组元素(integer) 1127.0.0.1:6379> PFCOUNT mykey #统计基数数量(integer) 10127.0.0.1:6379> PFADD mykey2 i jz x c v b n m (integer) 1127.0.0.1:6379> PFCOUNT mykey2(integer) 8
127.0.0.1:6379> PFMERGE mykey3 mykey mykey2 #mykey 和mykey2合并为mykey3(并集)OK127.0.0.1:6379> PFCOUNT mykey3(integer) 15
BitMaps类型Redis官方文档-Redis bitmaps | Redis
Redis中的BitMaps是一种基于位图的数据结构,它允许用户将位图存储为字符串,并对其进行位操作。
基础命令
命令演示
127.0.0.1:6379> setbit sign 0 1(integer) 0127.0.0.1:6379> setbit sign 1 0(integer) 0127.0.0.1:6379> setbit sign 2 0(integer) 0127.0.0.1:6379> setbit sign 3 1(integer) 0127.0.0.1:6379> setbit sign 4 1(integer) 0127.0.0.1:6379> setbit sign 5 0(integer) 0127.0.0.1:6379> setbit sign 6 1(integer) 0
127.0.0.1:6379> GETBIT sign 1(integer) 0127.0.0.1:6379> GETBIT sign 3(integer) 1
127.0.0.1:6379> BITCOUNT sign(integer) 4
(责任编辑:热点)
中盈盛达融资担保(01543.HK)完成发行2.60亿元公司债 票面利率为4.60%
《银河战士Prime:重置版》现已登陆Switch 支持中文