当前位置: 首页 > news >正文

Redis的三种特殊类型

geospatial 地理空间

可实现朋友定位、附近的人、打车距离计算等功能,城市经纬度可通过 城市经纬度查询-国内城市经度纬度在线查询工具 查询,有 6 个相关命令:GEOADDGEODISTGEOHASHGEOPOSGEORADIUSGEORADIUSBYMEMBER 。

1. geoadd

添加地理位置,格式:geoadd key 纬度 经度 名称

# 两极无法直接添加
127.0.0.1:6379> GEOADD china:city 116.40 39.90 beijing
(integer) 1
127.0.0.1:6379> GEOADD china:city 121.47 31.23 shanghai
(integer) 1
127.0.0.1:6379> GEOADD china:city 106.50 29.53 chongqing 114.05 22.52 shengzhen
(integer) 2
127.0.0.1:6379> GEOADD china:city 120.16 30.24 hangzhou 108.96 34.26 xian
(integer) 2

2. geopos

返回给定名称的纬度和经度

127.0.0.1:6379> GEOPOS china:city xian
1) 1) "108.9600017668167114"2) "34.25999964418929977"
127.0.0.1:6379> GEOPOS china:city xian beijing
1) 1) "108.9600017668167114"2) "34.25999964418929977"
2) 1) "116.39999896287918091"2) "39.90000009167092543"

3. geodist

返回两个给定位置之间的距离,单位支持 m(米)km(千米)mi(英里)ft(英尺)

127.0.0.1:6379> GEODIST china:city beijing xian km
"910.0565"
127.0.0.1:6379> GEODIST china:city hangzhou xian km
"1143.6295"

4. geohash

返回一个 11 个字符的 geohash 字符串

127.0.0.1:6379> GEOHASH china:city xian
1) "wqj6zky6bn0"  # 指定元素的纬度和经度的字符串

5. georadius

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

127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km
1) "chongqing"
2) "xian"
3) "shengzhen"
4) "hangzhou"
127.0.0.1:6379> GEORADIUS china:city 110 30 500 km
1) "chongqing"
2) "xian"
127.0.0.1:6379> GEORADIUS china:city 110 30 500 km withcoord
1) 1) "chongqing"2) 1) "106.49999767541885376"2) "29.52999957900659211"
2) 1) "xian"2) 1) "108.9600017668167114"2) "34.25999964418929977"

6. georadiusbymember

以一个成员为中心,查找指定半径范围内的元素

127.0.0.1:6379> GEORADIUSBYMEMBER china:city xian 1000 km
1) "xian"
2) "chongqing"
3) "beijing"

7. geo 的底层

geo 的底层是一个 zset 集合,可通过 zset 相关命令操作,如:

127.0.0.1:6379> zrange china:city 0 -1
1) "chongqing"
2) "xian"
3) "shengzhen"
4) "hangzhou"
5) "shanghai"
6) "beijing"
127.0.0.1:6379> zrem china:city shanghai
(integer) 1
127.0.0.1:6379> zrange china:city 0 -1
1) "chongqing"
2) "xian"
3) "shengzhen"
4) "hangzhou"
5) "beijing"

hyperloglog

(一)基数的概念

集合 A{1,3,5,7,8,7} 和 B{1,3,5,7,8},它们的基数(不重复元素个数)为 5 ,允许一定误差。

(二)简介

Redis Hyperloglog 是基数统计算法。优点是占用内存固定,对 \(2^{64}\) 不同元素计数,仅需 12KB 空间,误差率约 0.81% 。

(三)使用示例

# 添加元素
127.0.0.1:6379> PFADD myset a b c d e f f g h
(integer) 1
# 统计基数
127.0.0.1:6379> PFCOUNT myset
(integer) 8
# 添加另一个集合元素
127.0.0.1:6379> PFADD myset2 g h t n m k l e r
(integer) 1
# 统计(存在误差)
127.0.0.1:6379> PFCOUNT myset2
(integer) 8
# 合并集合
127.0.0.1:6379> PFMERGE myset3 myset myset2
OK
# 统计合并后基数
127.0.0.1:6379> PFCOUNT myset3
(integer) 13 

bitmaps

bitmaps 是位图存储,用二进制位记录,适用于只有两种状态场景(如登录 / 未登录等 )。

1. setbit

在 bitmaps 中添加数据,格式 setbit key offset value

127.0.0.1:6379> SETBIT sign 0 1
(integer) 0
127.0.0.1:6379> SETBIT sign 1 1
(integer) 0
127.0.0.1:6379> SETBIT sign 2 1
(integer) 0
127.0.0.1:6379> SETBIT sign 3 1
(integer) 0
127.0.0.1:6379> SETBIT sign 4 0
(integer) 0
127.0.0.1:6379> SETBIT sign 5 0
(integer) 0
127.0.0.1:6379> SETBIT sign 6 0
(integer) 0

2. getbit

查看位图中某个位置的值,格式 getbit key offset

127.0.0.1:6379> getbit sign 4
(integer) 0
127.0.0.1:6379> getbit sign 3
(integer) 1

3. bitcount

统计位图中值为 1 的个数,格式 bitcount key start end

127.0.0.1:6379> BITCOUNT sign 0 -1
(integer) 4 
http://www.dtcms.com/a/319528.html

相关文章:

  • 硬盘哨兵pe版本 v25.70.6 中文免费版
  • 【R语言】 高清美观的 MaxEnt 刀切图(Jackknife)绘制——提升论文质量
  • 基于Qt的Live2D模型显示以及控制
  • DAY33打卡
  • 【Unity输入系统】自定义与双击不冲突的单击Interaction
  • 【第八章】函数进阶宝典:参数、返回值与作用域全解析
  • RedisBloom使用
  • 任务进度状态同步 万能版 参考 工厂+策略+观察者设计模式 +锁设计 springboot+redission
  • itextPdf获取pdf文件宽高不准确
  • 设计模式-装饰模式 Java
  • 客户端利用MinIO对服务器数据进行同步
  • VN1 供应链销量预测建模竞赛技巧总结与分享(七)
  • 四边形面积
  • 极简 5 步:Ubuntu+RTX4090 源码编译 vLLM
  • JavaWeb03——基础标签及样式(表单)(黑马视频笔记)
  • 八、基于GD32 Embedded Builder开发GD32VW553(蓝牙广播)
  • 复杂光照场景漏检率↓76%!陌讯多模态融合算法在打电话识别的边缘部署优化
  • 使用Puppeteer轻松自动化浏览器操作
  • PYLON交叉编译:Ubuntu是x86,编译出arm64上运行的程序
  • 无人机航拍数据集|第8期 无人机海上目标检测YOLO数据集3641张yolov11/yolov8/yolov5可训练
  • 下载 | Windows Server 2016最新原版ISO映像!(集成7月更新、标准版、数据中心版、14393.8246)
  • 基于 C 语言的多态机制的驱动架构
  • 十八、k8s细粒度流量管理:服务网格
  • UiPath Studio介绍
  • CS231n2017 Assignment3 RNN、LSTM部分
  • 仁懋高压MOSFET在新能源汽车充电领域的应用
  • Java并发与数据库锁机制:悲观锁、乐观锁、隐式锁与显式锁
  • Java基础学习1(Java语言概述)
  • 音视频时间戳获取与同步原理详解
  • 如何为WordPress启用LiteSpeed缓存