Redis 第三讲 --- 指令篇 通用命令(一)

前言:

在《Redis 第二讲》中,我们完成了 Redis 的安装与环境配置,为实际操作奠定了基础。本讲将正式进入 Redis 的核心领域——指令操作。我们将从最基础的键值操作开始,逐步掌握数据读写、键管理及生产环境注意事项,为后续深入学习打下坚实根基。


一、学会使用文档

这是我们学习Redis的第一步,我们想作为一个合格的程序员必须要学会阅读文档。

通过redis-cli客户端和 redis 服务器交互.
redis 的命令非常非常多!!
任何一个工具软件,去找相关资料,一定是官方网站!!!
1. 掌握常用命令(多操作多练习)
2. 学会使用redis 的文档
虽然redis这种知名软件,都是有中文文档的.
但是还是建议大家看英文的,
(英语这一关,必须要过,也一定能过!!》
后面工作中可能会用到一些不太知名的软件/库,很可能没有中文文档.但是一定有英文官方文档。

对于如何阅读文档,主要是阅读官方网站,这里就不再重复了。

  • 官方文档(详细命令、配置指南)→ Docs

  • 下载 Redis(源码、稳定版、开发版)→ Downloads - Redis

  • Redis 博客(最新动态、技术文章)→ Redis Blog - Read about what’s happening at Redis

  • Redis 命令参考 → Commands | Docs


下面我们就介绍一下,我们在Redis当中会遇到的几个高频全局命令,有的小伙伴可能会问,什么是全局命令呢?

我们下面来解释一下,首先我们知道Redis是一个键值对的数据库,简单来说就是“key-value”,但是在Redis这里不想我们之前在语言阶段学习的键值对,Redis的vaule是各种数据结构,而不是数据类型,所以Redis为了方便操作相关的数据结构,就提出了针对响应结构的指令,但是也有一些指令是不必关心数据库的value是啥结构也可以发挥作用的,这些指令就被称为全局指令。

二、get/set

我们介绍一下,Redis最核心的两条指令,get/set。
我们已经知道redis是按照键值对的方式存储数据的,而get 根据 key 来取 value,set 把 key 和 value 存储进去
使用简单,学习成本很低

但是使用也是有注意的点的,我们前面说的value是有数据结构的区分的,实际上key也是有的,并且就是字符串类型,我们使用key设置键值对关系的时候,无论写的是啥,都会被Redis当成字符串来进行存储。

2.1 set

下面我们来演示一下:

        

我们发现Redis对于每一次的语句的执行结果是有反映的,这里我们就成功设置了一对键值对。

2.2 get 

 功能就如它的名字一样,通过输入key值得到value值。

注:

1、对于上述这里的key-value,不需要加上引号,就是表示字符串的类型当然,如果要是给key和value加上引号,也是可以的(单引号或者双引号都行)
2、redis中的命令不区分大小写.

但是在上面get最后一个查询当中我们看到一个新奇的单词 ”nil“,这又是啥意思呢?这就是我们下面的问题了。

2.3 null 与nil

关于这个单词在官方文档当中是这样写的。

nil 和 null 都表示 “无值”或“空值” 的概念,但它们的命名和使用场景因编程语言而异。

在Redis当中开发者选择使用nil表示空值,而在其他语言当中比如C/C++当中就是使用NULL表示空值,大家关于这个概念有个了解就好。


三、keys,exists

Redis 有 5 种数据结构,但它们都是键值对种的值,对于键来说有⼀些通⽤的命令。

3.1 KEYS

返回所有满⾜样式(pattern)的 key。那样式又是什么呢?

pattern样式包含特殊符号的字符串,有的地方翻译成"样式"或者"模式”。

存在的意义,是去描述特定的字符串长啥样的

⽀持如下统配样式。

• h?llo 匹配 hello , hallo 和 hxllo

• h*llo 匹配 hllo 和 heeeello

• h[ae]llo 匹配 hello 和 hallo 但不匹配 hillo

• h[^e]llo 匹配 hallo , hbllo , ... 但不匹配 hello

• h[a-b]llo 匹配 hallo 和 hbllo

当然我们也不口头说,我们下面实机演示一遍。

keys,支持的样式主要是有如下的几种:【?,*,[],^ ,-】

  1. ?:匹配任意一个字符
  2. []:[字符串]只能匹配到方括号内的字符串,别的不行.相当于给出固定的选项了,
  3. ^:排除某个特定的字符,只有该字符匹配不了.其他的都能匹配
  4. -:匹配某个范围内的字符.包含两侧边界

实际演示:

 现在我们的Redis上有这些键值,我们可以开始演示了。

1)?:匹配一个字符

2)*:匹配0个或者多个任意字符

3)[]:[字符串]只能匹配到方括号内的字符串,别的不行.相当于给出固定的选项了,

4)^:排除某个特定的字符,只有该字符匹配不了.其他的都能匹配

5)-:匹配某个范围内的字符.包含两侧边界

注意:我们在使用这个指令查询相关的key的时候,本质上是对key值进行一次遍历,所以我们的时间复杂度就是O(N),谈到这个我们就得谈到另外的一个问题了,那就是我们的keys *。

3.2 KEYS *

keys 命令的时间复杂度是O(N),所以,在生产环境上,一般都会禁止使用keys命令.尤其是大杀器keys*,为什么呢?还记得我们前面在谈到为啥Redis要更快一些吗?其中有一条原因是因为它是单线程,但是在keys *的情况下,一台的Redis服务器就得全力完成该条指令,查询 redis 中所有的 key !!那就没办法对用户的请求做出反映,没关系,负责用户服务的服务器发现没有响应,就会直接找mysql服务器发出请求,这样的后果可能是灾难性的,我们知道Redis服务器上一般存放的是我们服务的热点数据,那么基本上Redis服务器被阻塞了,那就是所有的用户请求就打到了MySQL服务器上,这很容易就让MySQL服务器挂掉,进而导致整个服务的挂掉。

3.3 exists

判断某个 key 是否存在。

语法:

1 EXISTS key [key ...]

时间复杂度:O(1)

返回值:key 存在的个数。 

当我们查询的key不存在的时候,就是直接返回0.

那我们下面再来看一种使用exists的方法。

大家说,这以红线划分的两种写法有什么不同吗?

要想讨论这个问题,我们应该先对网络的两个概念有所了解。

封装和分用
进行网络通信的时候,发送方发送一个数据,这个数据就要从应用层,到物理层,层层封装,
(每一层协议都要加上报头或者尾)=>发一个快递,要包装一下,要包装好几层
接收方收到一个数据,这个数据就要从物理层,到应用层层层分用
((把每一层协议中的报头或者尾给拆掉)=>收到一个快递,要拆快递,要拆很多层
而网卡 是 IO 设备,更何况,你的客户端和服务器不一定在一个主机上,中间可能隔着很远。

这就导致了其实每一次的网络IO的消耗是很大的,所有分开的写法,会产生更多轮次的网络通信,效率比较低,成本比较高。
redis自身也非常清楚上述问题.redis的很多命令都是支持一次就能操作多个key的操作 


四、生产环境

1.办公环境(入职公司之后,公司给你发个电脑)
笔记本(windows, mac)/台式机,现在办公电脑,一般8C16G512G
 

2.开发环境

有的时候,开发环境和办公环境是一个
有的时候,开发环境是单独的服务器,配置为28C128G4T,这两种情况主要是看岗位和公司规模
做前端/做客户端,一般来说,开发环境就是办公环境了,后端来说,很可能是单独的服务器。
主要是有的后端程序,会比较复杂
1. 编译一次时间特别久(C++) =>C++ 23 才会引入module
要使用高性能的服务器,进行编译
2. 有的程序一启动要消耗很多的cpu和内存资源.
办公电脑难以支撑
3.有的程序比较依赖linux,在windows环境搭不起来

3. 测试环境(测试工程师使用的)   

配置比较好的就是28C128G4T

4.线上环境/生产环境
(办公环境,开发环境,测试环境,也统称为线下环境,外界用户无法
访问到的)
线上环境则是外界用户能够访问到的,
一旦生产环境上出问题,一定会对于用户的使用产生影响!!直接的影响到公司营收!
很多公司的营收都是靠广告,广告一般是按照展示/点击次数来计费的~~
未来我们去操作线上环境的任何一个设备/程序都要怀着12分的谨慎!!

哪有的小伙伴说我以后不操作生产环境了行不行?

不行!!把一个程序“上线”才算是把活干完了。
上线也可以认为是正式程序猿的一个重要考核指标,也是衡量一个实习生能不能转正留用的重要标准。
想要看自己是否可能留用,就看上线次数,一两个月才上线一次,基本凉凉;如果一周能上线两三次,基本稳。


总结:

本讲初步探索了 Redis 的核心操作指令,包括键值读写(get/set)、键管理(keys/exists)等基础命令,并强调了生产环境的操作规范。通过实践这些指令,我们已迈出 Redis 实战的第一步。在下一讲《通用命令(二)》中,我们将深入 delexpiretype 等进阶指令,进一步解锁 Redis 的高效数据管理能力。请持续关注!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/85447.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/85447.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字媒体专业课程介绍以及就业方向

专业课程体系融合艺术创作与技术实践,旨在培养兼具美学素养和产业应用能力的复合型人才。以下是核心课程模块及代表性课程,涵盖从基础到高阶的全流程训练: 🎨 一、核心课程体系 艺术基础课程 绘画训练:素描、速写、色彩理论、构成艺术,培养造型能力与色彩运用2610。 动…

Spring-创建第一个SpringBoot项目

目录 一.使用IDEA创建 1.专业版 2.社区版 二.使用网页创建项目 三.项目目录介绍 一.使用IDEA创建 1.专业版 修改Server URL为https://start.aliyun.com 2.社区版 这里需要注意对应的IDEA版本,版本不对导入无法使用。 不需要解压&#xff0…

【数据分析三:Data Storage】数据存储

数据真是越来越多啊 正文开始 一、数据 结构化数据 可以使用关系型数据库表示和存储的数据,拥有固定结构 半结构化数据 弱结构化,虽然不符合关系型数据模型的要求,但是含有相关的标记(自描述结构),分割实体及其属性 。如&#xf…

Spring Boot 整合 Spring AI 与 MCP 开发智能体工具指南

Spring Boot 整合 Spring AI 与 MCP 开发智能体工具指南 一、引言 随着大语言模型(LLM)的普及,越来越多的开发者希望将其集成到自己的应用中。Spring AI 作为 Spring 生态下的 AI 集成框架,提供了便捷的方式来对接各种大模型。而 MCP(Model Context Pr…

【开源项目】GraphRAG Agent:可解释、可推理的下一代智能问答系统

GraphRAG Agent:可解释、可推理的下一代智能问答系统 ​​引言​​ 传统 RAG(检索增强生成)系统常因“黑盒推理”和上下文断裂被诟病。微软开源的 GraphRAG 框架尝试用知识图谱解决这一问题,而​​Graph RAG Agent​​&#xff0…

【论文笔记】【强化微调】AgentThink:思维链推理 + 工具调用

AgentThink: A Unified Framework for Tool-Augmented Chain-of-Thought Reasoning in Vision-Language Models for Autonomous Driving 1. 引述 这是一篇自动驾驶领域的论文。我对这篇论文主要感兴趣的点在于其对于工具调用(Tool Call)的设计。这一点同…

前端页面Javascript进阶DOM与BOM

一、DOM基础概念 DOM 是文档对象模型,提供编程接口用于操作 HTML 和 XML 文档。它将文档表示为节点树,每个节点代表文档的一部分,如元素、文本、属性等。通过 DOM,开发者可以访问和修改文档的结构、样式与内容。 文档节点类型 …

AWS CloudFormation深度解析:构建现代云原生应用基础设施

在现代云原生应用开发中,基础设施即代码(Infrastructure as Code, IaC)已成为标准实践。本文将深入解析一个完整的AWS CloudFormation模板,该模板为GlowChat Connector应用构建了生产级的基础设施。 模板概述 这个CloudFormation模板是一个两部分部署架构中的第一部分,专…

Oracle 查看所有表的字段名、数据类型及长度

1.只查看某个特定表的字段名 SELECT column_name, data_type, data_length FROM user_tab_columns WHERE table_name 你的表名 -- 注意大写 ORDER BY column_id;2.查看当前用户下所有表的字段名 SELECT table_name, column_name, data_type, data_length FROM user_tab_colu…

创客匠人分享知识付费监管升级下的行业价值重构:从合规挑战到发展机遇的实践路径

引言:监管政策背后的行业逻辑转向 知识付费领域的监管体系升级,本质上是对行业发展路径的重新校准。随着 "内容产品需具备知识沉淀载体" 等新规落地,行业正在经历从 "流量驱动型增长" 到 "价值驱动型发展" 的…

边缘计算的认识和应用

边缘计算 边缘计算是一种分布式计算范式,它将计算能力和数据存储放置在离数据源更近的位置,而不是依赖于集中式的数据中心。通过在“边缘”进行数据处理,边缘计算可以减少延迟、提高响应速度、节省带宽,并增强数据隐私和安全性。…

Arduino R4 WIFI横向滚动显示16×16LED屏

实现一个从左向右横向滚动的"吉祥如意"显示效果。 arduino r4 WiFi滚动显示16*16led #include <SPI.h>// 引脚定义 const int RowA 2, RowB 3, RowC 4, RowD 5; const int OE 6; const int LATCH 10;// 字模数据 (吉祥如意) const PROGMEM byte characte…

html css js网页制作成品——HTML+CSS+js力学光学天文网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…

嵌入式开发之freeRTOS移植

FreeRTOS 是一款广泛应用于嵌入式系统的开源实时操作系统&#xff08;RTOS&#xff09;&#xff0c;其移植过程需要结合具体硬件平台和编译器进行适配。以下是 FreeRTOS 移植的详细步骤和关键注意事项&#xff1a; 一、移植前的准备工作 1. 硬件平台确认 处理器架构&#xf…

【算法 day07】LeetCode 344.反转字符串 | 541. 反转字符串II | 卡码网:54.替换数字

344.反转字符串 题目链接 | 文档讲解 |视频讲解 : 链接 1.思路&#xff1a; 采用双指针&#xff0c;left从0开始移动,right从尾元素进行移动 循环判断条件&#xff1a;left< right,边界值使用举例法&#xff0c;eg: [ h ,e ,l,o ]偶数个不会相遇, [h ,e ,l ,l ,o ]奇数个&…

从检索到生成:RAG 如何重构大模型的知识边界?

引言&#xff1a;知识边界的突破与重构 在人工智能技术快速发展的今天&#xff0c;大型语言模型&#xff08;LLMs&#xff09;已经展现出强大的文本生成和理解能力。然而&#xff0c;这些模型在实际应用中仍面临着知识时效性、事实准确性和可溯源性等核心挑战。检索增强生成&a…

前端基础知识CSS系列 - 05(BFC的理解)

一、是什么 我们在页面布局的时候&#xff0c;经常出现以下情况&#xff1a; 这个元素高度怎么没了&#xff1f;这两栏布局怎么没法自适应&#xff1f;这两个元素的间距怎么有点奇怪的样子&#xff1f;...... 原因是元素之间相互的影响&#xff0c;导致了意料之外的情况&…

Prompt Engineering 学习指南:从入门到精通的最佳路径与资源

本 Prompt Engineering 技术报告,旨在提供一个从入门到精通的清晰学习路径、核心方案,并附上最关键的 GitHub 仓库资源。您可以将此报告作为快速提升 Prompt 能力的“速查手册”和“成长地图”。 Prompt Engineering 学习指南:从入门到精通的最佳路径与资源 技术报告摘要 (…

fastmcp MCPConfig多服务器使用案例;sse、stdio、streamable-http使用

1、sse、stdio、streamable-http使用 参考&#xff1a;https://gofastmcp.com/deployment/running-server#the-run-method stdio本地使用&#xff1b;sse、streamable-http远程调用&#xff08; Streamable HTTP—New in version: 2.3.0&#xff09; 调用&#xff1a; stdio、…

网站服务器被DDOS攻击打不开,是要换高防服务器还是加CDN能防护住?

高防云服务器、高防 IP 和高防 CDN 作为常见应对网络攻击的重要利器&#xff0c;它们各自有着独特的特点和应用场景&#xff0c;从技术架构看&#xff0c;高防云服务器是资源型防护&#xff0c;深度整合计算与防御资源&#xff1b;高防IP是流量型防护&#xff0c;以代理模式实现…