Redis—全局命令

Redis—全局命令

  • 🔎get / set
  • 🔎常用全局命令
    • keys
    • exists
    • del
    • expire
    • ttl
    • key 的过期策略
    • type

Redis 官网

Redis 中的命令不区分大小写

进入 Redis 客户端

redis-cli -h Redis 服务器的 IP 地址 -p Redis 服务器的端口号
  • 省略 -h 表示 Redis 服务器的 IP 地址为 localhost
  • 省略 -p 表示 Redis 服务器的端口号为 6379
redis-cli

🔎get / set


Redis 是按照键值对的方式存储数据

  • get, 根据 key 获取对应的 value
  • set, 存储 key 和 value
语法
set key value
get key

示例
set mouse keyboard
get mouse

如果 get 的 key 值不存在, 则会返回 nil
你可以将 nil 理解为 null

🔎常用全局命令


Redis 是键值对结构, key 是固定字符串
value 有多种类型, 包括

  1. 字符串
  2. 哈希表
  3. 列表
  4. 集合
  5. 有序集合

针对不同的数据结构, 会有不同的操作命令

全局命令, 即能够搭配任意一个数据结构进行使用

keys


keys 用于查询当前服务器上匹配的 key

通过一些特殊符号描述所要匹配的 key

语法
keys pattern

示例
keys h?llo
keys h*llo
keys h[abc]llo
keys h[^abc]llo
keys h[a-e]llo

pattern, 即要匹配的 key 的样式

解释🍂

h?llo, ? 表示任意一个字符
h*llo, * 表示任意多个字符
h[abc]llo, 表示仅匹配[]中的内容. 即匹配 hallo, hbllo, hcllo
h[^abc]llo, 表示仅排除[]中的内容. 即排除 hallo, hbllo, hcllo
h[a-e]llo, 表示匹配 hallo, hbllo, hcllo, ..., hello

注意🍂

keys pattern 命令的时间复杂度是 O(N)

因此在生产环境中一般禁止使用 keys pattern 命令(尤其是 keys * → 匹配所有)

这是因为在生产环境中 key 可能会非常多, 而 Redis 是一个单线程服务器, 执行 keys * 的时间较长, 这样就会导致 Redis 服务器被阻塞, 从而无法向其他客户端提供服务

我们知道, Redis 经常用于缓存存储热点数据, 替代 MySQL 负重前行
如果 Redis 被 keys * 操作阻塞, 那么请求就会直接查询数据库, 就容易导致 MySQL 挂了

对于生产环境的解释🍂

生产环境, 一般又称为线上环境, 外界用户能够访问
(办公环境, 开发环境, 测试环境一般统称为线下环境, 外界用户无法访问)

生产环境出现问题, 一定会影响用户的使用

exists


exists 用于判断某个 key 是否存在

返回值为 key 存在的个数

语法
exists key

示例
判断某一个 key 是否存在
exists hello 
exists hi
判断多个 key 是否存在
exists hello hi

Redis 是一个客户端服务器结构的程序. 而客户端, 服务器之间通过网络进行通信
因此在判断多个 key 是否存在时尽量写成 exists hello hi 这样的形式
避免写成 exists hello + exists hi 这样的形式

注意🍂

exists key 命令的时间复杂度是 O(1)

Redis 中的键值对通过哈希表的方式组织, 其中的 value 支持很多的数据结构类型
因此 exists key 命令为 O(1)

del


del(delete) 用于删除指定的 key

返回值为删除的 key 的个数

语法
del key

示例
删除指定的一个 key
del hello
del hi
删除指定的多个 key
del hello hi

删除指定的多个 key 时尽量写成 del hello hi 这样的形式

注意🍂

del key 命令的时间复杂度是 O(1)

expire


expire 用于给指定的 key 设置过期时间(前提是该 key 已经存在)
过期时间的单位是 s

返回值为 1, 表示设置成功
返回值为 0, 表示设置失败

语法
expire key 

示例
expire hello
expire hi

注意🍂

expire key 命令的时间复杂度是 O(1)

ttl


ttl(time to live) 用于查看指定 key 的过期时间还剩多久

返回值表示剩余的过期时间

特殊的返回值

  • -1, 表示未设置过期时间
  • -2, 表示 key 不存在
语法
ttl key

示例
ttl hello
ttl hi

注意🍂

ttl key 命令的时间复杂度是 O(1)

key 的过期策略


Redis 中可能同时存在很多的 key, 这些 key 中可能一大部分都有过期时间
那么 Redis 如何确定哪些 key 是过期了的需要被删除, 哪些还没有过期呢

Redis 的主要策略是

  1. 惰性删除
  2. 定期删除

惰性删除🍂

假设某一个 key 已经过期, 但还没有删除
如果后面有一次访问正好需要这个 key, 于是这次访问就会触发 Redis 的删除操作, 再将对应的 key 值返回 nil

举个栗子🌰

A 去小卖部买薯片, 此时货架上就还剩一包 A 最爱吃的薯片
A 拿起薯片就去结账, 结账时看到薯片的生产时间, 保质期意识到薯片过期了
于是 A 告诉老板不买了, 老板便将过期的薯片下架
(惰性删除)

定期删除🍂

每次抽取一部分进行验证过期时间
需要保证校验过程足够快, 即校验的时间是一定的

举个栗子🌰

小卖部的老板不能总是让顾客发现商品有没有过期, 要不他这个小卖部就倒闭了
于是老板定期的检查货架上的商品有没有过期
但是老板年事已高, 心中无志. 不想将他的小卖部做大做强, 再创辉煌
于是老板每次都非常快速的检查一部分商品的过期时间, 然后继续抽着烟, 喝着酒, 烫着头~~
(定期删除)

为什么对于定期删除的时间有要求

这是因为 Redis 是单线程的程序, 其主要的任务是处理请求命令
如果扫描过期的 key 的时间过长, 就会阻塞正常的处理请求

type


type 用于查询 key 所对应 value 的类型

返回值包括

  • none, 表示 key 不存在
  • string
  • list
  • set
  • zset
  • hash
  • stream, 当 redis 作为消息队列时使用的类型
语法
type key

示例
type hello
type hi

注意🍂

type key 命令的时间复杂度是 O(1)


🌸🌸🌸完结撒花🌸🌸🌸


在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OKR管理策略:为开发团队注入动力

引言 在这个快速变化的世界中,公司需要迅速应对市场变化,并保持其目标和战略的清晰性和一致性。而OKR(Objectives and Key Results)正是这个挑战的解决方案之一。OKR的实施可以帮助开发团队明确目标,关注关键结果&…

powershell几句话设置环境变量

设置环境变量比较繁琐,现在用这段话,在powershell中就可以轻松完成。 $existingPath [Environment]::GetEnvironmentVariable("Path", "Machine") $newPath "C:\Your\Path\Here"if ($existingPath -split ";"…

DSP学习笔记

一个汇编语句包含4个固定顺序的区域:标号(必须从第一列开始 不能空格,后面可以有:也可以没有) 助记符 操作数 注释(用分号或者星号来注释)伪指令用.开头,注释可以用第一列开始写&…

软件设计师(五)软件工程基础知识

一、软件工程概述 软件开发和维护过程中所遇到的各种问题称为“软件危机”。 软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程,其目的是提高软件生产率、提高软件质量、降低软件成本。 #mermaid-svg-h3j6K…

大数据指标体系-笔记

指标体系 1 总体流程图 1.1 2 模型‘ 2.1 OSM OSM(Object,Strategy,Measure) 「业务度量」涉及到以下两个概念:一个是KPI ,用来直 接衡量策略的有效性;一个是Target,是预先给出的值,用来判断是否达到预期 2.2 UJM User, Journey, Map 2.3 AARRR-海盗 AARRR(Acquisitio…

【C语言】通讯录3.0 (文件存储版)

前言 通讯录是一种记录联系人信息的工具,包括姓名、电话号码、电子邮件地址、住址等。 文章的一二三章均于上一篇相同,可以直接看第四章改造内容。 此通讯录是基于通讯录2.0(动态增长版)的基础上进行增加文件操作功能&#xff0c…

【多线程学习6】synchronized关键字

【多线程学习6】synchronized关键字 一、synchronized关键字是什么?有什么作用? synchronized关键字是Java线程同步的关键字,其可以修饰方法或代码块,并可以保证其修饰的方法或代码块在任意时刻只能有一个线程执行。 synchroni…

K8s集群安全机制

1.访问K8s集群的时候,需要经过三个步骤完成具体操作 (1)认证(2)鉴权(授权)(3)准入控制 进行访问的时候,过程中都要经过apiserver,apiserver做统…

java,python,c++有什么区别,python java c c++区别

大家好,给大家分享一下java,python,c有什么区别,很多人还不知道这一点。下面详细解释一下。现在让我们来看看! 从这四种语言的难度、受欢迎度还有作用以及优点缺点给楼主做一个全面的分析,我们可以从中了解其区别,以及…

AP2400 LED汽车摩灯照明电源驱动 过EMC DC-DC降压恒流IC

产品特点 宽输入电压范围:5V~100V 可设定电流范围:10mA~6000mA 固定工作频率:150KHZ 内置抖频电路,降低对其他设备的 EMI干扰 平均电流模式采样,恒流精度更高 0-100%占空比控制&#xff0…

【状态估计】基于UKF法、AUKF法的电力系统三相状态估计研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

并查集练习—省份数量

上一篇中讲了并查集及其原理,在这篇文章中简单应用一下。如果对并查集不是很了解强烈建议先看上一篇。 题目: 有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相…

大数据Flink(五十七):Yarn集群环境(生产推荐)

文章目录 Yarn集群环境(生产推荐) 一、准备工作

目标检测中的IOU

IOU 什么是IOU?IOU应用场景写代码调试什么是IOU? 简单来说IOU就是用来度量目标检测中预测框与真实框的重叠程度。在图像分类中,有一个明确的指标准确率来衡量模型分类模型的好坏。其公式为: 这个公式显然不适合在在目标检测中使用。我们知道目标检测中都是用一个矩形框住…

【福建事业单位-推理判断】02图形推理(数量-空间重构)

【福建事业单位-推理判断】02图形推理(数量-空间重构) 一、数量规律1.1点(交点、切点)点的细化考法总结 1.2线条(线条的数量)线的细化考点一笔画(重点)一笔画的判定 总结 1.3 面面的…

flutter开发实战-video_player视频播放功能及视频缓存

flutter开发实战-video_player视频播放功能及视频缓存 最近开发过程中video_player播放视频, 一、引入video_player 在pubspec.yaml引入video_player video_player: ^2.7.0在iOS上,video_player使用的是AVPlayer进行播放。 在Android上,…

医疗实施-集成平台下门诊就诊流程详解

目录 集成平台下门诊就诊流程详解1.患者建档2. 门诊挂号3. 医生就诊4.处方开立5.费用收取、6、科室执行医嘱集成平台下门诊就诊流程详解 这篇文章是考虑医院使用了集成平台之后,门诊就诊流程详解。与我的文章《医疗实施-门诊就诊流程详解》的大致一样,供学有余力的人阅读。 …

AMASS database

AMASS是一个由不同的光学标记运动捕捉数据集统一表示在一个公共框架和参数化下的大型人体运动数据库。它包含了超过40小时的运动数据,涵盖了300多个主体和11000多个运动。它使用了SMPL人体模型,它是一种基于混合形状和姿态空间的生成式人体模型&#xff…

spring boot中web容器配置

web容器配置 spring boot 默认的web容器是 tomcat&#xff0c;如果需要换成其他的 web 容器&#xff0c;可以如下配置。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><!-- 默…

springboot()—— swagger

零、一张图读懂swagger 懂了&#xff0c;这玩意就是用swagger搞出来的&#xff01; 就是一个后端开发自测的东西嘛&#xff01; 一、概念 存在即合理&#xff0c;我们看一下swagger诞生的原因&#xff1a;在前后端分离的架构中&#xff0c;前端新增一个字段&#xff0c;后端就…