Redis 基本全局命令

个人主页:C++忠实粉丝
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C++忠实粉丝 原创

Redis 基本全局命令

收录于专栏[redis]
本专栏旨在分享学习Redis的一点学习笔记,欢迎大家在评论区交流讨论💌

目录

KEYS

EXISTS 

DEL 

EXPIRE 

TTL

TYPE 


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

KEYS

返回所有满足样式(pattern)的key。支持如下统配样式。

• 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 pattern

命令有效版本:1.0.0 之后

时间复杂度:O(N)

返回值:匹配 pattern 的所有 key。

示例:

MSET:将多个键值对一次性存储到 Redis 中。如果指定的某个键已经存在,MSET 会覆盖它的值。如果某个键对应的值不存在,MSET 会新建该值。

注意:

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

所以,在生产环境中,一般都会禁用 keys 命令,尤其是大杀器 keys * => 查询所有的 key!

因为生产环境中 key 可能会非常多!而 redis 是一个单线程的服务器,执行 keys* 的时间非常长,就使 redis 服务器被阻塞了,无法给其他客户端提供服务!

这样的后果可能是灾难性的~


redis 经常用于做缓存,挡在 mysql 前面,替 mysql 负重潜行的人,万一 redis 被一个 keys* 阻塞住了,此时其他的查询 redis 操作就超时了,此时这些请求就会直接查数据库,突然一大波请求过来了,mysql 措手不及,就容易挂了,整个系统就基本瘫痪了。如果你要是没能及时发现,及时恢复的话。。。

EXISTS 

判断某个 key 是否存在。 

语法:

EXISTS key [key ...]

命令有效版本:1.0.0 之后

时间复杂度:O(1)

返回值:key 存在的个数。

示例: 

 

注意:

分开的写法,会产生更多轮次的网络通信。

进行网络通信的时候,发送方发送一个数据,这个数据就要从应用层,到物理层,层层封装。(每一层协议都要加上报头或者尾)=> 发一个快递,要包装一下,要包装很多层,接收方收到一个数据,这个数据就要从物理层,到应用层层层分用(把每一层协议中的报头或者尾给拆掉)=> 收到一个快递,要拆快递,要拆很多层。 

DEL 

删除指定的 key。

语法:

DEL key [key ...]

命令有效版本:1.0.0 之后

时间复杂度:O(1) 

返回值:删除掉的 key 的个数 

示例:

 

Redis VS MySQL 的区别:

之前学 MySQL 的时候,当时强调,删除类的操作:

drop database

drop table

delete from...

都是非常危险的操作!!

一旦删除之后,数据就没有了~


但是 redis 主要的应用场景就是作为缓存~~

此时 redis 里存放的只是一个热点数据,全量数据是在 MySQL 数据库中。

此时,如果把 redis 中的 key 删除了几个,一般来说,问题不大~

但是,当然如果把所有的数据或者一大半数据一下都干没,这种影响会很大。(本来 redis 是帮 MySQL 负重前行,redis 没数据了,大部分的请求就直接打给 MySQL 然后就容易把 MySQL 搞挂)

相比之下,如果是 MySQL 这样的数据,哪怕误删了一个数据,都是可能影响很大的~

如果是把 redis 作为数据库,此时误删数据的影响就很大了

如果是把redis 作为消息队列(mq),这种情况误删数据影响不大,就需要具体分析了。

EXPIRE 

为指定的 key 添加秒级过期时间(Time to live TTL)

语法:

EXPIRE key seconds

命令有效版本:1.0.0 之后

时间复杂度:O(1)

返回值:1表示设置成功。0 表示设置失败

示例: 

TTL

获取指定 key 的过期时间,秒级。

语法:

TTL key

命令有效时间:1.0.0 之后

时间复杂度:O(1)

返回值:剩余过期时间。-1 表示没有关联过期时间,-2 表示 key 不存在

示例: 

一个 redis 中可能同时存在很多很多 key,这些 key 中可能很大一部分有过期时间,此时 redis 服务器咋知道哪些 key 已经过期要被删除,哪些 key 还没有过期?? 

redis 的整体策略是 :

1. 定期删除:

每次抽取一部分,进行验证过期时间,保证这个抽取检查的过程足够快!因为 redis 是单线程的程序,主要的任务(处理每个命令的任务)如果扫描过期 key 消耗的时间太多了,就可能导致正常处理请求被阻塞了。(产生了类似于执行 keys * 这样的效果) 

2. 惰性删除

假设这个 key 已经到过期时间了,但是暂时还没删它,key 还存在

紧接着,后面依次访问,正好用到了这个 key,于是这次访问就会让 redis 服务器触发删除 key 的操作,同时再返回一个 nil。

3. redis 为了对上述进行补充,还提供了一系列的内存淘汰策略,后面讲

TYPE 

返回 key 对应的数据类型。

语法:

TYPE key

命令有效版本:1.0.0 之后

时间复杂度:O(1)

返回值:none,string,list,set,zset,hash and stream。

示例:

本章只是抛砖引玉,给出几个通用的命令,为5中数据结构的使用做一个热身,后续我将对键管理做一个更为详细的介绍。感兴趣的宝子们千万不要错过啊~~ 

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

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

相关文章

qt QZipReader详解

1、概述 QZipReader 是 Qt 中用于从 .zip 文件中读取和提取文件内容的类。它提供了便捷的方法来访问压缩包中的文件和目录,并允许你解压缩单个或多个文件。通过 QZipReader,你可以以编程方式读取 .zip 文件中的内容,并提取它们到目标目录中。…

开发微信小程序的过程与心得

起因 作为家长,我近期参与了学校的护学岗工作。在这个过程中,我发现需要使用水印相机来记录护学活动,但市面上大多数水印相机应用都要求开通会员才能使用完整功能。作为一名程序员,我决定利用自己的技术背景,开发一个…

基于vue-popperjs的二次封装弹窗

前言&#xff1a; 基于vue-popperjs的二次封装代码 <template><!-- 1. :appendToBody"true"是否把位置加到body外层标签上饿了么UI和antD是true&#xff0c;iview和vuetifyjs是false2. trigger属性触发方式&#xff0c;常用hover悬浮触发、clickToOpen鼠标…

OpenAI 普及 ChatGPT,开通热线电话,近屿智能深耕AI培训

12月19日&#xff0c;在OpenAI直播活动的第10天&#xff0c;宣布允许用户通过电话或WhatsApp与ChatGPT进行交互。并在美国推出 ChatGPT 热线电话&#xff0c;用户拨打后可与 ChatGPT 进行语音对话。 这项服务的一个亮点在于它兼容各种类型的通信设备——不论是现代智能手机如iP…

黑马Java面试教程_P9_MySQL

系列博客目录 文章目录 系列博客目录前言1. 优化1.1 MySQL中&#xff0c;如何定位慢查询&#xff1f;面试文稿 1.2 面试官接着问&#xff1a;那这个SQL语句执行很慢,如何分析 ( 如何优化&#xff09;呢?面试文稿 1.3 了解过索引吗?(什么是索引)1.4 继续问 索引的底层数据结构…

Vue3+@antv/g2plot 生成词云图

antv/g2plot 是一个基于 AntV 的图表库属于antv库的一部分 用于快速创建各种类型的图表 支持折线图、柱状图、饼图、散点图等多种图表类型 antv/g2plot 属于antv库的一部分 g2plot是在g2基础上封装的 npm install antv/g2plot --save效果 所有值共享一个颜色并且每次刷新颜色随…

K线单边突破指标(附带源码)

编写需求&#xff1a; 今天我们来根据粉丝要求进行源码复现&#xff1a; 【请根据最近两根K线判断当下的行情做多&#xff0c;做空方向。用三个价格判断当前K线状态&#xff0c;最高价、最低价、收盘价都大于昨日对应价格&#xff0c;为上涨K线。用三个价格判断当前K线状态&a…

LabVIEW电机控制中的主动消抖

在LabVIEW电机控制系统中&#xff0c;抖动现象&#xff08;如控制信号波动或机械振动&#xff09;会影响系统的稳定性和精度。通过使用主动消抖算法&#xff0c;可以有效降低抖动&#xff0c;提高控制性能。本文将介绍几种主流的主动消抖算法&#xff0c;并结合具体应用案例进行…

【安全测试相关知识】

安全测试介绍 背景 在当前信息技术快速发展的背景下&#xff0c;网络安全问题日益严峻&#xff0c;数据泄露、黑客攻击、病毒传播等安全事件层出不穷&#xff0c;给个人、企业乃至国家带来严重威胁。所以安全测试已成为企业和国家关注的重心 作用 安全测试是确保软件系统安…

重温设计模式--工厂模式(简单、工厂、抽象)

文章目录 工厂模式定义工厂模式通常可以细分为以下几种类型1、简单工厂模式&#xff08;Simple Factory Pattern&#xff09;2、工厂方法模式&#xff08;Factory Method Pattern&#xff09;3、抽象工厂模式&#xff08;Abstract Factory Pattern) UML 图1、简单工厂模式UML2、…

SAP PP 后继物料触发条件

问题&#xff1a; 物料主数据 MRP4维护了后继物料&#xff0c;该物料库存为0&#xff0c;但是做生成订单时候&#xff0c;查看BOM没有显示未后续无力啊 原因 需要在生成订单中点击可用性检查&#xff0c;才能出发对库存校验&#xff0c;才能匹配到后继物料

联通光猫怎么自己改桥接模式?

环境&#xff1a; 联通光猫 ZXHN F677V9 硬件版本号 V9.0 软件版本号 V9.0.0P1T3 问题描述&#xff1a; 联通光猫怎么自己改桥接模式 家里用的是ZXHN F677V9 光猫&#xff0c;最近又搞了个软路由&#xff0c;想改桥接模式 解决方案&#xff1a; 1.拿到最新超级密码&…

商场消防电气控制系统设计(论文+源码)

1系统的功能及方案设计 如图2.1所示为本次设计的整体框图&#xff0c;其中单片机部分采用ST89C52来负责协调各个模块&#xff1b;液晶选择LCD1602液晶屏来显示信息;温度传感器选择PT1000进行温度的检测&#xff1b;烟雾传检测选择MQ2烟雾传感器&#xff1b;CO2检测选择CCS811模…

Springboot3声明式客户端

简介 Spring Framework 6 和 Spring Boot 3 引入了一些新的特性和改进&#xff0c;以简化 HTTP API 的消费。它允许开发者通过声明式接口来定义对外部 HTTP API 的调用。其中开发者只需要定义接口和方法签名&#xff0c;而具体的实现细节由框架自动生成。 这个特性通常被称为…

信贷域——互联网金融体系

摘要 本文介绍了互联网金融的概念、特征、发展阶段和生态。互联网金融是互联网与金融结合的新兴模式&#xff0c;以大数据、云计算为基础&#xff0c;实现资金融通和支付。发展经历了技术支持、业务领域深入到金融业务领域三个阶段。互联网金融生态包括互联网支付、P2P网络借贷…

精通Redis

目录 1.NoSQL 非关系型数据库 2.Redis 3.Redis的java客户端 4.Jedis 4.1Jedis快速入门 4.2Jedis连接池及使用 5.SpringDataRedis和RedisTemplate 6.SpringDataRedis快速入门 7.RedisSerializer 1.NoSQL 非关系型数据库 基础篇-02.初始Redis-认识NoSQL_哔哩哔哩_bilib…

LabVIEW水泵性能测试系统

在现代工业应用中&#xff0c;水泵作为一种广泛使用的流体输送设备&#xff0c;其性能的可靠性对整个生产系统的稳定运行至关重要。通过LabVIEW软件配合专业硬件设备&#xff0c;设计了一套水泵性能测试系统&#xff0c;实现对各类水泵的综合性能测试与分析&#xff0c;提升水泵…

2.利用docker进行gitlab服务器迁移

一、Docker安装 安装Ubuntu 22.04.3 LTS \n \l 1、旧版本安装包清理 sudo apt-get remove docker docker-engine docker.io containerd runc当你卸载Docker时&#xff0c;存储在/var/lib/docker/中的图像、容器、卷和网络不会自动删除。如果你想从一个干净的安装开始&#x…

无人零售 4G 工业无线路由器赋能自助贩卖机高效运营

工业4G路由器为运营商赋予 “千里眼”&#xff0c;实现对贩卖机销售、库存、设备状态的远程精准监控&#xff0c;便于及时补货与维护&#xff1b;凭借强大的数据实时传输&#xff0c;助力深度洞察销售趋势、优化库存、挖掘商机&#xff1b;还能远程升级、保障交易安全、快速处理…