Redis 中的通用命令(命令的返回值、复杂度、注意事项及操作演示)

Redis 中的通用命令(高频率操作)

文章目录

  • Redis 中的通用命令(高频率操作)
  • Redis 的数据类型
  • redis-cli 命令
  • Keys 命令
  • Exists 命令
  • Expire 命令
  • Ttl 命令
  • Type命令

Redis 的数据类型

Redis 支持多种数据类型,整体来说,Redis 是一个键值对结构的,它的 key 固定是字符串类型,而 value 支持 字符串、哈希表、列表、集合、有序集合 等几种数据类型,操作不同的数据时就需要用到不同的命令,但是也有一些全局的命令 在这几种数据类型中都可以使用,命令如下:

redis-cli 命令

在Linux 上通过 redis-cli 即可启动 Redis 客户端,如下图:

在这里插入图片描述

(如果要退出redis客户端的话直接 Ctrl + d)

通过 redis-cli 命令就可以连接到我们电脑上的 redis 客户端,也可以通过指定 ip 地址来连接其他主机上的 redis 客户端,如下图:

通过 -h 选项指定主机地址,通过 -p 选项指定端口号

在这里插入图片描述

Keys 命令

keys 命令 用来查询服务器上匹配的 key(相当于模糊查询命令)

h?llo 将 ?替换成任意一个字符

h*llo 将 * 替换成0个或多个字符

h[ab]llo 只能匹配到 [] 指定的字符,别的字符都不行,相当于给出了固定的选项

h [ ^ x] llo []表示排除错误答案,除了匹配x,其他的任何字符都可以

h[a-b]llo 表示匹配到指定的字符

通过一些特殊符号,在服务上查找与之类似的key,这些特殊符号都有以下几种:

h?llo 将 ?替换成任意一个字符

h?llo 可以匹配到 hello/hxllo/hallo 等

操作演示:

  1. 设置三个key,分别为:hello、hallo、hbllo

在这里插入图片描述

  1. 使用 keys h?llo 进行模糊查询

在这里插入图片描述

h*llo 将 * 替换成0个或多个字符

h*llo 匹配到 h/hllo/heeeello

在这里插入图片描述

h[ab]llo 只能匹配到 [] 指定的字符,别的字符都不行,相当于给出了固定的选项

匹配到 hallo/hbllo
在这里插入图片描述

h [ ^ x] llo []表示排除错误答案,除了匹配x,其他的任何字符都可以

h [ ^ x] llo 可以匹配到 hello/hallo等,但是不会匹配到 hxllo,除了x其他的都可以
在这里插入图片描述

h[a-b]llo 表示匹配到指定的字符

h[a-b]llo 可以匹配到 hallo 或 hbllo

在这里插入图片描述

时间复杂度:O(n)

注意:Keys 的时间复杂度是 O(n),因为,它要遍历 Redis 中的所有数据,所以应该在生产环境上要慎重使用,尤其是 keys*,不要去使用,因为它会查询 Redis 中所有的 key,而 Redis 是一个单线程的服务器,执行 Keys * 的时间就比较长,就会造成 Redis 服务器被阻塞,无法给其他的客户端提供服务。

而 Redis 经常是用作缓存,是替 Mysql 冲锋陷阵的,万一 Redis 被Keys*给阻塞住了,此时其他的查询 Redis 的操作也就超时了,那么所有的查询请求就会给到 Mysql 上,此时突然一大波请求来到给到Mysql,就有可能给Mysql一个措手不及,给 Mysql 也搞挂了,此时就出现大问题了,如果没有及时的发现及时的恢复的话,会出现很大的问题!!!

Exists 命令

Exists key [key….] 查看 key 是否存在

**返回值:**key的个数

**时间复杂度:**O(k) 注意:这个k不是所有的数据,而是因为它是可以查看多个key是否存在的,所以这个k是要查询的key的数量

操作演示:

在这里插入图片描述

这里就出现一个问题:它可以一次查询多个 key,那么我一次查询多个 key 和 查询一个一个的 key 有什么区别吗?

答案:区别是很大的,首先呢,Redis 是 客户端-服务器 结构的,所以,是通过网络来通信的,而一次查询多个 key 时,只需要向服务器发送一次请求即可,而一次查询一个,一个一个的查,是要发送多个请求的,而网络通信的效率是比较低,成本是比较高的。

del key [key….] 删除 key

返回值:成功删除 key 的个数

**时间复杂度:**O(k) ,注意这个k不是所有的数据,而是因为它是可以查看多个key是否存在的,所以这个k是指定的 key 的数量。

操作演示:

在这里插入图片描述

Expire 命令

expire [key] seconds 给指定的key设置过期时间,时间单位是:秒。key 的存活时间超过这个值时就会自动删除

pexpire [key] 毫秒 给指定的key设置过期时间,时间单位是:毫秒

注意:这里设置过期时间,指定的 key 必须是已经存在的。

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

时间复杂度是:O(1)

这种给 Redis 中的key设置过期时间的方式也常用于很多的场景,例如:给验证码设置过期时间,点外卖优惠券过期时间等

操作演示:

在这里插入图片描述

Ttl 命令

ttl [key] 获取指定key剩余的过期时间

**返回值:**剩余的过期时间/-1:没有设置过期时间/-2:没有指定的key

时间复杂度:O(1)

操作演示:

在这里插入图片描述

Redis 的过期策略是如何实现的?换句话说,一个Redis中的存在多个有过期时间的key,那么,Redis如何知道哪些key要被删除,哪些不被删除?(重要)

Redis 的过期策略整体是这两种方式相结合的:定期删除 和 惰性删除

惰性删除:假设有一个key的过期时间已经到了,但是暂时不会给他删除,先保留着,等到我们下次去访问这个key时,此时Redis服务器就会触发删除操作,将key删除,此时就返回一个 nil。

定期删除:定期的去扫描key,如果有过期的key,就进行删除,但是这里有一个问题就是,如果key非常多的话,扫描起来就比较浪费时间,所以,在这里对定期扫描的时间进行了要求,就是它在扫描检查的时候是一部分一部分抽取着扫描检查,以保证扫描检查的时间足够快。

这里为什么要对扫描的时间进行要求呢?

首先,Redis 是单线程执行任务的,Redis 主要的任务还要处理用户发来的命令,如果扫描key的时间太长,处理命令的任务就会被阻塞,所以,进行了要求。

以上两种方式,虽然可以对 key 进行删除,但是整体效果一般,它也可能会残留很多的key没有及时的删除掉。

Redis 为了删除操作进行补充,还提供了一系列的内存淘汰策略。

网上还有人说Redis有定时删除策略,这个说法是错误的,Redis 并没有采用定时删除策略

Type命令

type 查看key对应的数据类型

**返回值:**key 的数据类型

时间复杂度:O(1 )

操作演示:

在这里插入图片描述

再次明确,Redis 中,key 的类型固定就是 String,而 Value 的类型主要有以下几种:none, String,list,set,zset,hash,strem。这里面查看类型也就是查看 Value 的类型。

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

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

相关文章

第N7周:seq2seq翻译实战-pytorch复现-小白版

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 理论基础 seq2seq(Sequence-to-Sequence)模型是一种用于机器翻译、文本摘要等序列转换任务的框架。它由两个主要的递归神经网络&#…

【leetcode】双指针算法题

文章目录 1.算法思想2.移动零3.复写零方法一方法二 4.快乐数5.盛水最多的容器方法一(暴力求解)方法二(左右指针) 6.有效三角形的个数方法一(暴力求解)方法二(左右指针) 7.两数之和8.…

CNN文献综述

卷积神经网络(Convolutional Neural Networks,简称CNN)是深度学习领域中的一种重要模型,主要用于图像识别和计算机视觉任务。其设计灵感来自于生物学中视觉皮层的工作原理,能够高效地处理图像和语音等数据。 基本原理…

UVa1265/LA4848 Tour Belt

UVa1265/LA4848 Tour Belt 题目链接题意分析AC 代码 题目链接 本题是2010年icpc亚洲区域赛大田赛区的F题 题意 给出一个有n个结点m条边的加权无向图G(2≤n≤5000,1≤m≤n(n-1)/2),满足如下条件的结点集B(2≤|B|≤n&am…

剪画小程序:手机制作音乐串烧,用它,真的很简单!

Hello,大家好呀,我是不会画画的小画。 相伴关注歌手的小伙伴们,上周五的《歌手 2024》第八期大家看了吧!那期节目里有好几首歌都让我沉醉其中,像汪苏泷的《听见下雨的声音》、谭维维的《兰花花儿》等等。 为了能让大…

c++之旅第十一弹——顺序表

大家好啊,这里是c之旅第十一弹,跟随我的步伐来开始这一篇的学习吧! 如果有知识性错误,欢迎各位指正!!一起加油!! 创作不易,希望大家多多支持哦! 一,数据结构…

基于docker环境及Harbor部署{很简短一点了,耐心看吧}

用到的环境: docker 、nacos、compose、harbor(自行安装 ,以下连接作为参考) nacos:史上最全整合nacos单机模式整合哈哈哈哈哈_nacos 源码启动 单机模式-CSDN博客 docker、compose、harbor:史上最全的整合Harbor安装教程&#…

ChatGPT:AOP配置中的切入点定义

ChatGPT&#xff1a;AOP配置中的切入点定义 <aop:pointcut id“addTime” expression“execution(* com.xrq.aop.HelloWorld.print*(…))” /> 这是什么 这是一个AOP&#xff08;面向方面编程&#xff09;配置中的切入点定义。AOP是一种编程范式&#xff0c;用于将跨越多…

把鼠标光标移到一段文字的首部,尾部,以及翻行查找文字等

如果当前的键盘无单独的End、Home、PgDn、PdUp。 1、如果光标在一段文字的中间&#xff1a; 需要快速移到文字尾部&#xff0c;按住&#xff1a;shiftEnd(如果End在数字1键扣上,shift1&#xff09; 需要快速移到文字首部&#xff1a;按住&#xff1a;shiftHome(如果End在数字…

vue2 img src 无法显示问题

1、页面标签这样写 <img :src"pdf2wordUrl" alt"Image">2、data这样定义 pdf2wordUrl: imgOff,3、import这样写 import imgOn from ../../assets/on.pngimport imgOff from ../../assets/off.png4、转换代码 if (type pdf2word) {this.convertTit…

xxx_proc 重写遇到的问题

1. & 与 && 的使用 需要使用 按位 & 逻辑时 &#xff0c;必须使用& &#xff1b; 其他非按位与 逻辑&#xff0c; 推荐使用 &&&#xff0c; 使用& 会导致覆盖率分析不全&#xff08;软件问题&#xff09; 2. 数据加&#xff0c;减溢出 数据…

数据结构之顺序表专题

在学习数据结构之前我们要先了解什么是数据结构&#xff1f; 1.数据结构相关概念 1.什么是数据结构&#xff1f; 数据结构是由“数据”和“结构”两词组合而来。 什么是数据?常见的数值1、2、3、4.、教务系统里保存的用户信息(姓名、性别、年龄、学历等等)、网页里肉眼可以…

qt 关于大端小端的一个实验 简单实验

1.概要 起因我用滚动是x86电脑&#xff0c;我用一个usort a11a ,我期待转换长的char字符应该是这样的“1aa1”,因为x86是小端的&#xff0c;这也是这个16位 类型的实际内存顺序&#xff0c;但是输出的结果是 “a11a”&#xff0c;难道这环境不是小端&#xff1f;难道qt能智能…

TensorBoard进阶

文章目录 TensorBoard进阶1.设置TensorBoard2.图像数据在TensorBoard中可视化3.模型结构在TensorBoard中可视化&#xff08;重点✅&#xff09;4.高维数据在TensorBoard中低维可视化5.利用TensorBoard跟踪模型的训练过程&#xff08;重点✅&#xff09;6.利用TensorBoard给每个…

complex复数库学习

此头文件是数值库的一部分。本篇介绍complex的基本用法。 常用的API如下&#xff1a; 运算 real 返回实部 (函数模板) imag 返回虚部 (函数模板) abs(std::complex) 返回复数的模 (函数模板) arg 返回辐角 (函数模板) norm 返回模(范数)的平方 (函数模板) conj 返回复共轭 (函…

桌面保存的Word文件删除怎么找回?超实用的三个方法?

在日常工作和学习中&#xff0c;我们经常会使用Word文档进行文字编辑和文件保存。但是&#xff0c;有时由于操作失误或系统故障&#xff0c;我们会不小心将存放在电脑桌面重要的Word文件删除了。导致无法挽回的损失&#xff0c;但幸运的是&#xff0c;有一些方法可以帮助我们找…

源代码防泄漏的制胜法宝——沙箱

沙箱技术作为现代信息安全领域的一种重要手段&#xff0c;其在源代码防泄密方面的应用愈发受到业界的关注。源代码作为企业或组织的核心资产&#xff0c;一旦泄露&#xff0c;不仅可能导致知识产权的流失&#xff0c;还可能对企业运营造成重大影响。因此&#xff0c;利用沙箱技…

Dark Brandon是什么梗:中英双语介绍

中文版 “Dark Brandon”是一个互联网梗和社交媒体现象&#xff0c;涉及到美国总统乔拜登的公众形象。这个梗通过呈现一个虚构的、往往是幽默的拜登形象&#xff0c;把他描绘成一个狡猾而强大的角色&#xff0c;与他平常的公众形象形成对比。以下是“Dark Brandon”梗的背景和…

跨境干货|最新注册Google账号方法分享

谷歌账号对做跨境外贸业务的人来说是刚需&#xff0c;目前来说大部分的海外社媒平台、工具都可以用谷歌账号来注册。但是仍然有很多朋友并不知道如何注册这个谷歌账号&#xff0c;今天就来给大家分享2个注册谷歌账号的方法&#xff0c;一个是手机号注册&#xff0c;一个是如何跳…

面向对象案例:电影院

TOC 思路 代码 结构 具体代码 Movie.java public class Movie {//一共七个private int id;private String name;private double price;private double score;private String director;private String actors;private String info;//get和setpublic int getId() {return id;…