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

【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

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

http://www.xdnf.cn/news/4503.html

相关文章:

  • java中ArrayList扩容机制的解析
  • 转换算子和行动算子的区别
  • 扩散模型(Diffusion Models)的革命性进展
  • 智算中心的搭建标准
  • Sat2Density论文详解——卫星-地面图像生成
  • @Transactional注解的使用
  • LangChain第三讲:大模型的输出如何格式化成字符串?
  • DIFY教程第五弹:科研论文翻译与SEO翻译应用
  • 简单的基于关键词匹配的 QA 系统示例
  • ICode国际青少年编程竞赛—Python—4级训练场—复杂嵌套循环
  • 多线程的出现解决了什么问题?深入解析多线程的核心价值
  • 力扣——25 K个一组翻转链表
  • 写个远程操作Android的调试程序
  • 【Linux篇】多线程编程中的互斥与同步:深入理解锁与条件变量的应用
  • Nginx 性能调优与深度监控
  • 7. HTML 表格基础
  • 第三章、RL Games:High performance RL library
  • femap许可回收流程
  • mysql修改root密码
  • 东方泵业,室外消火栓泵 2#故障灯亮,报警生响
  • 蓝桥杯2025年第十六届省赛真题-水质检测
  • 【shardingsphere分布式主键无效】
  • Linux 系统命令使用指南1
  • 2025最新出版 Microsoft Project由入门到精通(二)
  • WPF 触发器 Trigger
  • java每日精进 5.07【框架之数据权限】
  • 【C++游戏引擎开发】第33篇:物理引擎(Bullet)—射线检测
  • 小数的二进制表示
  • 【卡特兰数】不同的二叉搜索树
  • 学习笔记:黑马程序员JavaWeb开发教程(2025.3.30)