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

【Redis】C++如何使用redis

文章目录

  • 1. redis客户端
  • 2. 使用通用命令
  • 3. 使用string命令
  • 3. 使用list命令
  • 4. 使用set命令
  • 5. 使用hash命令
  • 6. 使用zset命令

在这里插入图片描述

1. redis客户端

在前面的学习种,我们都是使用redis命令行客户端手动执行操作的;但是更多的时候,需要使用redis的api,来实现定制化的redis客户端程序,进一步操作redis服务器(即用程序操作redis)。

在这里插入图片描述
我们知道redis是使用网络通信来实现的,那么有网络通信就一定要有协议;redis有自己的应用层协议:RESP
在这里插入图片描述
RESP是基于TCP的,请求和应答是一问一答式的
在这里插入图片描述

下面是协议的类型:

在这里插入图片描述
redis客户端、服务器就是按照上述格式,构造字符串,向socke中写入;从socket中读取字符串,按照上述格式解析。

在我们使用协议的时候,不需要再按照上述格式,构造、解析字符串了;因为已经有大佬们写好了,我们只需要使用人家写的库就可以了。

库有很多,我们使用redis-plus-plus:https://github.com/sewenew/redis-plus-plus

Ubuntu系统下:

  1. 安装hiredis: redis-plus-plus 是基于hiredis 实现的
apt install libhiredis-dev
  1. 安装redis-plus-plus
 git clone https://github.com/sewenew/redis-plus-plus.git

在这里插入图片描述
测试环境
在这里插入图片描述

在这里插入图片描述

2. 使用通用命令

  1. get / set

在这里插入图片描述

  1. exists、del

在这里插入图片描述

  1. keys

在这里插入图片描述

  1. expire、ttl

在这里插入图片描述

  1. type

在这里插入图片描述

3. 使用string命令

  1. get、set、过期时间

在这里插入图片描述
2. nx、ex

在这里插入图片描述

  1. mset、mget

在这里插入图片描述

  1. getrange、setrange

在这里插入图片描述

  1. incr、decr

在这里插入图片描述

3. 使用list命令

  1. lpush、rpush、lrange

在这里插入图片描述

  1. rpop、lpop、brpop、blpop、llen

在这里插入图片描述

blpop与brpop的返回值:OptionalStringPair,里面是包裹了一个pair,pair里面是string;

  • pair.first:元素属于哪个list
  • pair.second:当前pop的元素

在这里插入图片描述

我们可以发现,redis-plus-plus这个库的风格还是非常统一的。

  • 当一个函数,参数需要传递多个值的时候,往往都是支持 初始化列表 或者是一对迭代器 的方式来进行实现的
  • 当一个函数返回值需要表示多个数据的时候,也往往会借助插入迭代器,来实现往一个容器中添加元素的效果
  • 当某些场景涉及到无效值的时候,往往会搭配 std:optional 来进行使用

4. 使用set命令

  1. sadd、smembers、sismember

在这里插入图片描述

  1. scard、spop

在这里插入图片描述

  1. sinter、sinterstore、sunionstore

在这里插入图片描述

5. 使用hash命令

  1. hset、hget、hexists、hdel

在这里插入图片描述

  1. hkeys、hvals

在这里插入图片描述

  1. hmset、hmget

在这里插入图片描述

6. 使用zset命令

  1. zadd、zrange

在这里插入图片描述

  1. zcard、zrem

在这里插入图片描述

  1. zscore、zrank

在这里插入图片描述
在这里插入图片描述

相关文章:

  • Nginx 性能调优与深度监控
  • Linux上将conda环境VLLM服务注册为开机自启
  • “430”“531”光伏政策变革下,安科瑞如何 “保驾护航”?
  • 热部署相关
  • Office365功能特点
  • 7. HTML 表格基础
  • MATLAB技巧——命令行输入的绘图,中文是正常的,到了脚本(m文件)里面就变成乱码的解决方法
  • default和delete final和override
  • 【fastadmin开发实战】财务数据快速导入系统(复制导入)
  • 力扣92.反转指定范围内的链表、25.k个一组反转链表
  • 学习黑客Linux 系统状态管理
  • 不同OS版本中的同一yum源yum list差异排查思路
  • Android Studio根目录下创建多个可运行的模块
  • PDF文档压缩攻略
  • 【PhysUnits】2 Scalar<T> 标量元组结构体(scalar/mod.rs)
  • ABC 403
  • MySQL的基本操作
  • vue3+ts的watch全解!
  • 案例分享 | 攻克ADAS开发测试难题,实现单元动态测试新突破
  • 【Python】让Selenium 像Beautifulsoup一样,用解析HTML 结构的方式提取元素!
  • “行人相撞案”现场视频公布,法院:表述不当造成误导
  • 上财发布“AI+课程体系”,人工智能如何赋能财经教育?
  • 央行:下阶段将实施好适度宽松的货币政策
  • 2025柯桥时尚周启幕:国际纺都越来越时尚
  • 国家发改委:美芯片药品等领域关税影响全球科技发展,损害人类共同利益
  • 少年中国之少年的形塑