Redis中的GEO和Stream数据类型分别如何应用?

更新于
2026-10-04 02:06:59
0阅读来源:SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1510个文字,预计阅读时间需要7分钟。

GEO+GEO是用于存储和操作地理定位信息的数据库类型。随着移动互联网时代的发展,基于位置的服务(LBS)日益流行,例如附近的建筑等。GEO解决了Redis对位置信息存储的需求。

GEO

GEO 是用来存储并操作地理位置信息的数据类型。

随着移动互联网时代到来,LBS服务 (Location-Based Service) 愈发潮流,例如附近的建筑等。

GEO 就是为了解决 Redis 对位置信息的存储需求而诞生的。

内部实现

GEO 内部使用 Sorted Set 集合类型,使用 [GeoHash](Geohash - Wikipedia) 编码方法实现了经纬度到 Sorted Set 中元素权重分数的转换。

将经纬度保存到 Sorted Set 中,利用 Sorted Set 提供的“按权重进行有序范围查找”的特性,实现 LBS 服务中频繁使用的“搜索附近”的需求。

# 向locations添加 GEOADD locations 116.034579 39.903628 114 # 从locations获取10个5km内目标 GEORADIUS locations 116.054579 39.040650 5 km ASC COUNT 10

Stream

Stream 是 Redis 专为 消息队列 设计的数据类型。

在 Stream 之前,基于原生 Redis 消息队列的实现方式都有着或多或少的缺陷:

  • 发布订阅模式,不能持久化也就无法可靠的保存消息,并且对于离线重连的客户端不能读取历史消息的缺陷;
  • List 实现消息队列的方式不能重复消费,一个消息消费完就会被删除,而且生产者需要自行实现全局唯一 ID。
阅读全文

本文共计1510个文字,预计阅读时间需要7分钟。

GEO+GEO是用于存储和操作地理定位信息的数据库类型。随着移动互联网时代的发展,基于位置的服务(LBS)日益流行,例如附近的建筑等。GEO解决了Redis对位置信息存储的需求。

GEO

GEO 是用来存储并操作地理位置信息的数据类型。

随着移动互联网时代到来,LBS服务 (Location-Based Service) 愈发潮流,例如附近的建筑等。

GEO 就是为了解决 Redis 对位置信息的存储需求而诞生的。

内部实现

GEO 内部使用 Sorted Set 集合类型,使用 [GeoHash](Geohash - Wikipedia) 编码方法实现了经纬度到 Sorted Set 中元素权重分数的转换。

将经纬度保存到 Sorted Set 中,利用 Sorted Set 提供的“按权重进行有序范围查找”的特性,实现 LBS 服务中频繁使用的“搜索附近”的需求。

# 向locations添加 GEOADD locations 116.034579 39.903628 114 # 从locations获取10个5km内目标 GEORADIUS locations 116.054579 39.040650 5 km ASC COUNT 10

Stream

Stream 是 Redis 专为 消息队列 设计的数据类型。

在 Stream 之前,基于原生 Redis 消息队列的实现方式都有着或多或少的缺陷:

  • 发布订阅模式,不能持久化也就无法可靠的保存消息,并且对于离线重连的客户端不能读取历史消息的缺陷;
  • List 实现消息队列的方式不能重复消费,一个消息消费完就会被删除,而且生产者需要自行实现全局唯一 ID。
阅读全文