当前位置:首页 >热点 >Redis中的三种特殊类型 我们一般会下载城市数据

Redis中的三种特殊类型 我们一般会下载城市数据

2024-06-30 20:00:07 [百科] 来源:避面尹邢网

Redis中的特殊三种特殊类型

作者:Java码农之路 数据库 Redis Redis中的Geospatial是一个用于地理空间数据的功能模块,它可以存储和查询地理坐标、类型半径、特殊矩形、类型多边形等地理空间对象。特殊

前言

Redis中的类型这三个数据类型在很多开源的项目中都有使用到,除了日常开发中使用Java去实现某些功能外,特殊还可以通过这些特殊的类型数据类型进行实现,本文也简单介绍了这三种数据类型使用的特殊场景,可以帮助读者在开发中实现功能提供新的类型思路。

一、特殊Geospatial(地理位置)

Geospatial类型Redis官方文档-Redis 类型geospatial | Redis

Redis中的三种特殊类型 我们一般会下载城市数据

Redis中的Geospatial是一个用于地理空间数据的功能模块,它可以存储和查询地理坐标、特殊半径、类型矩形、特殊多边形等地理空间对象。通过使用Geospatial,您可以对地理空间对象进行各种操作,例如计算两个地点之间的距离、查找位于给定半径内的地点、查找位于给定矩形或多边形内的地点等。

Redis中的三种特殊类型 我们一般会下载城市数据

基础命令

Redis中的三种特殊类型 我们一般会下载城市数据

  • 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 值:经度 纬度 名称

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

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"

3. 计算两个城市之间的距离

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"

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

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"

5. 以城市为中心寻找其它城市

127.0.0.1:6379> GEORADIUSBYMEMBER china:city beijin 1000 km1) "beijin"2) "xian"

6. 将经纬度转化为字符串

127.0.0.1:6379> GEOHASH china:city beijin1) "wx4fbxxfke0"

7. 使用Zset的命令来操作Geospatial

==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(基数统计)

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. 创建元素,并统计其中的个数

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

2. 合并元素

127.0.0.1:6379> PFMERGE mykey3 mykey mykey2 #mykey 和mykey2合并为mykey3(并集)OK127.0.0.1:6379> PFCOUNT mykey3(integer) 15

三、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.

命令演示

1. 使用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

2. 查看状态

127.0.0.1:6379> GETBIT sign 1(integer) 0127.0.0.1:6379> GETBIT sign 3(integer) 1

3. 统计状态

127.0.0.1:6379> BITCOUNT sign(integer) 4


责任编辑:武晓燕 来源: 今日头条 Redis模块空间对象

(责任编辑:热点)

    推荐文章
    • 中盈盛达融资担保(01543.HK)完成发行2.60亿元公司债 票面利率为4.60%

      中盈盛达融资担保(01543.HK)完成发行2.60亿元公司债 票面利率为4.60%中盈盛达融资担保(01543.HK)公告,广东中盈盛达融资担保投资股份有限公司(以下简称“发行人”)发行不超过人民币5亿元公司债券已获得中国证券监督管理委员会证监许可〔2020 ...[详细]
    • 双11“不剁手”指南

      双11“不剁手”指南一年一度最重要、最疯狂、最劲爆的“剁手节”即将到来,相信很多剁手党、购物狂早已开始摩拳擦掌,反复演练了。说是“节”,但是真正“剁手&rdqu ...[详细]
    • 张勇:未来1

      张勇:未来15月28日,在2019全球智慧物流峰会上,阿里巴巴集团CEO张勇表示,在未来一两年内,物流“数字化”将向“数智化”转变,智能化将成为物流行业所有从业者面临的重大历史机遇。张勇表示,2018年中国包裹递 ...[详细]
    • 南昌江纺1953文化创意产业园开工建设

      南昌江纺1953文化创意产业园开工建设赢商网获悉,近年来为进一步丰富南昌历史文化名城内涵、打造城市特色魅力空间、推动南昌高质量发展,南昌文旅一直努力挖掘文化产业新的发挥市场。目前南昌自然资源局发布了江纺工业遗产项目最新备案,近日该项目迎来 ...[详细]
    • 支付宝基金的钱可以随时取出吗 到账时间是多久?

      支付宝基金的钱可以随时取出吗 到账时间是多久?支付宝是第三方支付平台,除了支付之外,还可以购买理财产品,比如基金。最近有网友询问,支付宝基金的钱可以随时取吗?一般多久可以到账?想要知道答案的朋友,跟小编一起去看看吧。据了解,支付宝基金的钱是可以随 ...[详细]
    • 《寂静之地》衍生电影开拍 明年3月上映

      《寂静之地》衍生电影开拍 明年3月上映派拉蒙影业热门恐怖片 《寂静之地》衍生电影《寂静之地:第一天》近日开拍,制片人约翰·卡拉辛斯基在社交媒体发布片场照,导演迈克尔·萨诺斯基和女主角露皮塔·尼永奥亮相。影片将于2024年3月8日北美上映。 ...[详细]
    • 《守望先锋2》第3赛季有约会模拟 一拳超人联动活动等

      《守望先锋2》第3赛季有约会模拟 一拳超人联动活动等近日暴雪官方宣布《守望先锋2》第3赛季将于2月8日上线,带来一系列全新内容,包含新的南极控制地图、带有亚洲神话主题的战斗通行证、神话雾子造型、约会模拟:真爱特攻,《一拳超人》联动活动等。全新南极半岛控 ...[详细]
    • 《漫威暗夜之子》销量不佳 或与发售日有关

      《漫威暗夜之子》销量不佳 或与发售日有关近日,彭博社的记者Jason Schreier报道称,《漫威暗夜之子》在销量方面遭受了失败。对此,T2工作室的CEO Zelnick回应称,《漫威暗夜之子》销量不佳原因之一是发售日期挑选的不够合适。《 ...[详细]
    • 受跟踪指数下调影响 “10月最惨基金”一月跌超30%

      受跟踪指数下调影响 “10月最惨基金”一月跌超30%受跟踪指数下调影响,近日一只基金净值接连“受挫”。据Wind最新数据显示,11月2日当天,建信易盛郑商所能源化工期货ETF联接A/C份额的单日净值跌幅达3.66%、3.67%, ...[详细]
    • 《银河战士Prime:重置版》现已登陆Switch 支持中文

      《银河战士Prime:重置版》现已登陆Switch 支持中文在今早的任天堂直面会上,任天堂正式公布了《银河战士Prime:重置版》,该作下载版现已正式登陆Switch,售价289港币,实体版将在3月3日发售,游戏支持中文。直面会预告视频:介绍视频:为了追踪从「 ...[详细]
    热点阅读