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

Redis——Redis进阶命令集详解(下)

本文详细介绍了Redis一些复杂命令的使用,包括Redis事务相关命令,如MULTIEXECDISCARDWATCH ,发布订阅操作命令,如PUBLISH 、SUBSCRIBE 、PSUBSCRIBE ,BitMap操作命令,如SETBIT、GETBIT、BITCOUNT、BITOP,HyperLogLog 操作命令PFADD、PFCOUNT、PFMERGE,GEO命令如GEOADD、GEODIST、GEORADIUS,以及性能测试命令redis-benchmark等等

本文目录

      • 一、Redis 事务
      • 二、发布订阅操作命令
      • 三、BitMap 操作命令
      • 四、HyperLogLog 操作命令
      • 五、Geo操作命令
      • 六、benchmark 性能测试

一、Redis 事务

Redis 事务通过 MULTIEXECDISCARDWATCH 命令实现。事务可以将多个命令打包,按顺序执行,并且在执行过程中不会被其他客户端的命令打断。

MULTI :开启一个事务。
EXEC :执行事务中的所有命令
DISCARD: 取消事务。
WATCH :用于监视一个或多个键,若在事务执行前这些键被其他客户端修改,则事务会被取消。

MULTI
SET name r
GET name
EXEC

以上命令将 SETGET 命令打包成一个事务执行。

二、发布订阅操作命令

Redis 的发布-订阅功能允许客户端订阅一个或多个频道,当有其他客户端向这些频道发布消息时,订阅者会收到相应的消息。

PUBLISH <channel> <message>:向指定的频道 channel 发布一条消息 message
SUBSCRIBE <channel> [channel ...]:订阅一个或多个频道。
PSUBSCRIBE <pattern> [pattern ...]:订阅符合指定模式的频道。

三、BitMap 操作命令

  • 设置与获取位值

    • SETBIT <key> <offset> <value>:将键 key 对应的 BitMap 中偏移量为 offset 的位设置为 value(0 或 1)。
    • GETBIT <key> <offset>:获取键 key 对应的 BitMap 中偏移量为 offset 的位的值。
  • 位统计与操作

    • BITCOUNT <key> [start end]:统计键 key 对应的 BitMap 中值为 1 的位的数量,可指定统计的字节范围。
    • BITOP <operation> <destkey> <key1> [key2 ...]:对多个 BitMap 进行位运算(如 AND、OR、XOR、NOT),结果存储在 destkey 中。
  • BitMap 应用场景
    BitMap 是一种以位为单位进行存储的数据结构,每个位只能存储 0 或 1。在 Redis 中,BitMap 可以使用字符串类型来实现。

应用场景
- 用户签到:可以使用一个 BitMap 来记录用户的签到情况,每个位对应一天,签到则将该位置为 1,未签到则为 0。
- 在线用户统计:通过 BitMap 记录每个用户的在线状态,统计在线用户数量。

四、HyperLogLog 操作命令

HyperLogLog 是一种用于估算集合中唯一元素数量的概率性数据结构,它在占用极小内存的情况下可以对大量数据的基数进行近似统计。

  • 命令
    • PFADD <key> <element> [element ...]:向 HyperLogLog 中添加一个或多个元素。
    • PFCOUNT <key> [key ...]:估算 HyperLogLog 中唯一元素的数量,可同时对多个 HyperLogLog 进行统计。
    • PFMERGE <destkey> <sourcekey1> [sourcekey2 ...]:将多个 HyperLogLog 合并为一个,结果存储在 destkey 中。

五、Geo操作命令

Redis 的 Geospatial 功能用于存储和处理地理空间数据,如地理位置的经纬度信息。基于有序集合(ZSet)实现,通过将经纬度转换为一个分数进行存储。

  • 命令
    • GEOADD <key> <longitude> <latitude> <member> [longitude latitude member ...]:向键 key 对应的地理空间集合中添加一个或多个地理位置信息。
    • GEODIST <key> <member1> <member2> [unit]:计算键 key 对应的地理空间集合中两个成员之间的距离,可指定单位(如 m、km、mi、ft)。
    • GEORADIUS <key> <longitude> <latitude> <radius> <unit> [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count]:查询键 key 对应的地理空间集合中距离指定经纬度 radius 范围内的成员,可选择返回成员的经纬度、距离等信息。

六、benchmark 性能测试

Redis 自带 redis - benchmark 工具,可用于对 Redis 进行性能测试。能模拟多个客户端同时向 Redis 服务器发送请求,测试 Redis 在不同场景下的性能指标,如 QPS(每秒查询率)、响应时间等。也可通过指定不同的参数,如客户端数量、请求数量、请求类型等,来模拟不同的业务场景,评估 Redis 在高并发情况下的性能表现。

  • 命令
redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 100000

此命令表示使用 100 个客户端同时向 127.0.0.1:6379 的 Redis 服务器发送 100000 个请求进行性能测试。



← 上一篇 MySQL——表添加索引多种方式
记得点赞、关注、收藏哦!
下一篇 JUC小册——公平锁和非公平锁 →
http://www.xdnf.cn/news/1166599.html

相关文章:

  • Docker Compose UI远程访问教程:结合贝锐花生壳实现内网穿透
  • Qt中QObject类的核心作用与使用
  • C++函数 vs Go函数
  • Qt基本控件使用:按钮、标签、文本框等
  • 【打怪升级 - 01】保姆级机器视觉入门指南:硬件选型 + CUDA/cuDNN/Miniconda/PyTorch 安装全流程(附版本匹配秘籍)
  • Kotlin多线程调试
  • freertos关键函数理解 uxListRemove
  • 拼多多视觉算法面试30问全景精解
  • 【AI时代速通QT】第五节:Qt Creator如何引入第三方库,以OpenCV为例
  • 《汇编语言:基于X86处理器》第9章 字符串和数组(2)
  • 库制作与原理
  • Vue 3 面试题全套题库
  • Elasticsearch安装指南
  • 【集群】MySQL的主从复制了解吗?会有延迟吗,原因是什么?
  • AngularJS 动画
  • RabbitMQ--批量处理
  • Linux 内核与底层开发
  • Axios 二次封装
  • 用org.apache.pdfbox 转换 PDF 到 图片格式
  • EMA《2025-2028年药品监管中的数据与AI 1.3版》信息分析
  • OEC 刷机Armbain 25.05后配置说明
  • 扣子Coze智能体实战:自动化拆解抖音对标账号,输出完整分析报告(喂饭级教程)
  • Java 大视界 -- Java 大数据在智能医疗医疗设备维护与管理中的应用(358)
  • Apache Ignite 中乐观事务(OPTIMISTIC Transactions)的工作机制
  • Rabbit安装
  • 全星FMEA软件系统:FMEA、PC、PFD一体化管理的智能解决方案
  • python中 tqdm ,itertuples 是什么
  • ucharts 搭配uniapp 自定义x轴文字 实现截取显示
  • Vue开发常用
  • 医院信息系统(HIS)切换实施方案与管理技术分析