前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis 中的 3 种特殊数据类型

Redis 中的 3 种特殊数据类型

作者头像
村雨遥
发布2020-09-11 15:43:53
6840
发布2020-09-11 15:43:53
举报
文章被收录于专栏:JavaParkJavaPark
目录
  • 1. 前言
  • 2. 三种特殊的数据类型
    • 2.1 Gerspatial(地理位置)
    • 2.2 Hyperloglog(基数统计)
    • 2.3 Bitmap(位图)

1. 前言

Redis 中除开最常用的 5 种数据类型之外,还有 3 种特殊的数据类型,他们是:

  • Gerspatial(地理位置)
  • Hyperloglog(基数统计)
  • Bitmap(位图)

2. 三种特殊的数据类型

2.1 Gerspatial(地理位置)

主要针对地理位置操作,有如下 6 个命令:

命令

说明

备注

geoadd

添加地理位置

经度有效值:[-180, 180]纬度有效值:[-85.05112878, 85.05112878]

geodist

两地之间的距离

m 表示单位为米km 表示单位为千米mi 表示单位为英里ft 表示单位为英尺

geohash

将二维的经纬度转换为一维的字符串。如果两个字符串越接近,那么则距离越近

返回 11 个字符的 geohash 字符串

geopos

获得当前位置(坐标值)

georadius

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

georadiusbymember

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

代码语言:javascript
复制
# 添加北京和上海的地理位置信息
127.0.0.1:6379> geoadd china:city 116.40 39.90 beijing
127.0.0.1:6379> geoadd china:city 121.47 31.23 shanghai

# 获取北京位置
geopos china:city beijing

# 计算北京上海的直线距离
127.0.0.1:6379> geodist china:city beijing shanghai km

# 以 120,40 为中心,搜索 1500km 范围内的城市
127.0.0.1:6379> georadius china:city 120 40 1500 km

# 搜索位于指定位置的其他元素
127.0.0.1:6379> georadiusbymember china:city beijing 1000 km

2.2 Hyperloglog(基数统计)

2.8.9 版本中新加入的数据类型,主要用来做 基数统计 的算法,适合于在输入元素的数量或体积较大时,计算基数所需空间总是固定且小额的。每个键只需要 12kb 内存,就能存下

2^{64}

个不同元素。HyperLogLog 只会根据输入元素来计算基数,而不会存储输入元素的本身,主要有三个命令:

命令

说明

pfadd

创建一组元素

pfcount

统计元素基数数量

pfmerge

整合两组元素

代码语言:javascript
复制
# 创建第一组元素
127.0.0.1:6379> pfadd key1 a b c b c d e

# 统计 key1 元素的基数数量
127.0.0.1:6379> pfcount key1

# 创建第二组元素
127.0.0.1:6379> pfadd key2 4 2 3 2 1 5

# 合并第一二组元素
127.0.0.1:6379> pfmerge mergekey key1 key2

# 查看并集基数数量
127.0.0.1:6379> pfcount mergekey

2.3 Bitmap(位图)

Bitmap(位图) 是通过一个 bit 来表示某个元素对应的值或状态,其中 key 是对应元素本身,常用于用户签到、统计活跃用户等场景,常用相关命令有:

命令

说明

setbit

设置位图值

getbit

获取位图值

bitcount

统计位图值为 1 的值个数

代码语言:javascript
复制
# 设置一周的签到次数
127.0.0.1:6379> setbit sign 1 1

127.0.0.1:6379> setbit sign 2 1

127.0.0.1:6379> setbit sign 3 1

127.0.0.1:6379> setbit sign 4 1

127.0.0.1:6379> setbit sign 5 1

127.0.0.1:6379> setbit sign 6 0

127.0.0.1:6379> setbit sign 7 0

# 获取周 5 的签到情况
127.0.0.1:6379> getbit sign 5

# 统计是否全勤
127.0.0.1:6379> bitcount sign
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-09-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 村雨遥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 前言
  • 2. 三种特殊的数据类型
    • 2.1 Gerspatial(地理位置)
      • 2.2 Hyperloglog(基数统计)
        • 2.3 Bitmap(位图)
        相关产品与服务
        云数据库 Redis
        腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档