Redis远程字典服务器(11)—— redis客户端介绍

embedded/2024/10/18 18:37:01/

一,基本介绍

  1. 前面学习的主要是各种Redis的基本操作/命令,都是再Redis命令行客户端,手动执行的,但是这种方式不是我们日常开发中主要的形式
  2. 更多的时候,是使用Redis的api,来实现定制化的Redis客户端程序,来进一步操作Redis服务器(简单来说就是:用程序来操作Redis服务器
  3. MySQL也是如此,会用C++代码结合MySQL的api头文件来操作MySQL

Redis的命令行客户端,或者第三方图形化客户端,本质上都属于是“通用的客户端程序”,相比之下,我们在工作中更希望使用到的是“专用的”,“定制化”的客户端程序

Redis能支持很多很多的编程语言,但是往上大部分都是以Java为主,但是由于本人是主攻C++方向的,所以后面的客户端代码编写,我们以C++语言为主哈~ 

我们前面也说过,Redis客户端和服务器是以网络通信的方式进行数据交互的:

  1. 网络通信过程中,会用到很多的“协议”,比如数据链路层的以太网,网络层的IP协议,传输层的TCP/UDP协议,这些协议是固定好的,是在系统内核或者驱动程序中实现,咱们程序员只能选择,不能修改
  2. 而对于应用层,虽然业界有很多成熟的应用层协议,比如HTTP和HTTPS等,但是更多的时候,都会“自定义”应用层协议,Redis的应用层协议,就是自定义的协议(Redis的传输层还是TCP )
  3. 客户端按照这里的应用层协议发送请求,服务器按照这个协议进行解析,再按照这个协议构造响应,客户端这个响应(这个操作之所以能完成,就是因为开发客户端的人,和开发服务器的人,都知道 协议的具体细节)
  4. 咱们作为第三方,要想开发Redis客户端,也就需要知道Redis的应用层协议,而这个协议,官网是就有完整的介绍:Redis serialization protocol specification | Docs

二,认识RESP

Redis serialization protocol specification | Docs

Redis自定义应用层的协议名称,就叫做“RESP”,全称为:

 ​​​​

 

 总结:搬出上述内容只是为了理解RESP,了解Redis底层的通信原理,不影响后续代码的编写,并且我们不用真的按照文档里的协议,去解析/构造字符串,因为这套协议早就已经公开了,已经有很多大佬实现了这套协议的解析/狗仔,我们只需要使用这些大佬们提供的库,就可以比较简单方便地来完成和Redis服务器通信地操作了(正所谓,站在巨人的肩膀上)

Redis serialization protocol specification | Docs 


http://www.ppmy.cn/embedded/99328.html

相关文章

CUDA的相关特点及优势

CUDA(Compute Unified Device Architecture)是英伟达(NVIDIA)开发的一种并行计算平台和编程模型。它允许开发者利用 NVIDIA GPU(图形处理器)的并行计算能力来加速应用程序的执行。 主要特点: …

使用dockerDesktop下载x86,amd64,arm64镜像

开启梯子 注意dockerDesktop不需要登录账号密码,不然拉取镜像会提醒账号或者密码错误 修改dockerDesktop配置,将experimental的值设置成 true,意思是:开启manifest实验特性 重启docker后下载镜像 –platform后面就是架构版本&a…

MacOS 升级 Ruby 版本的操作与考量

在现代软件开发中,Ruby 以其简洁、优雅的语法和强大的功能点亮了无数开发者的代码之路。尤其是 Ruby on Rails 框架的蓬勃发展,使得 Ruby 语言在 Web 开发领域独树一帜。随着应用程序需求的变化,开发者们常常需要升级 Ruby 的版本&#xff0c…

腾讯优图开源多模态大模型VITA : GPT-4o的简易平替!

Abs:https://arxiv.org/pdf/2408.05211 Demo:https://vita-home.github.io/ Code:https://github.com/VITA-MLLM/VITA GPT-4o 的卓越多模态能力和用户交互体验在实际应用中非常重要,但没有开源模型在这两个领域同时表现出色。本文…

【R语言】基于多模型的变量重要性图 (Variable Importance Plots)

变量重要性图 Variable Importance Plots 1. 写在前面2.1数据导入2.2 模型训练2.3 变量重要性2.4 变量重要性图2.5 模型模拟验证3.基于caret包计算变量重要性 1. 写在前面 好久没有更新博客了,正好最近在帮老师做一个项目,里面涉及到了不同环境变量的重要…

【计算机三级-数据库技术】操作题大题(第六套)

第六套操作题 第46题 假定要建立一个学校科研项目管理的信息系统,需要管理如下信息: 教师:教师编号、教师姓名; 项目:项目编号、项目名称、资助额: 学生:学生编号、学生姓名、学位&#xff0c…

JMeter与数据库交互:执行SQL查询性能测试

JMeter与数据库交互:执行SQL查询性能测试 在现代软件开发中,数据库性能是确保应用响应速度和稳定性的重要因素。Apache JMeter作为一款强大的性能测试工具,不仅能够模拟HTTP请求,还支持通过JDBC请求对数据库进行压力测试。本文将…

集成测试怎么做?

任何产品想要长期保持高质量运行,集成测试正是实现这一目标必不可少的工具。 本文重点介绍集成测试实现的流程,而非测试工具本身。我们的目的是聚焦于创建测试过程中你可能遇到的问题,以便你能自主地推进工作。 缺陷的成本 细节决定成败&a…