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安装教程&#…

数据结构之顺序表专题

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

TensorBoard进阶

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

complex复数库学习

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

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

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

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

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

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

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

面向对象案例:电影院

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;…

opencv概念以及安装方法

#opencv相关概念介绍 Open Source Computer Vision Library 缩写 opencv 翻译:开源的计算机视觉库 ,英特尔公司发起并开发,支持多种编程语言(如C、Python、Java等),支持计算机视觉和机器学习等众多算法&a…

如何让自动化测试更加灵活简洁?

简化的架构对于自动化测试和主代码一样重要。冗余和不灵活性可能会导致一些问题:比如 UI 中的任何更改都需要更新多个文件,测试可能在功能上相互重复,并且支持新功能可能会变成一项耗时且有挑战性的工作来适应现有测试。 页面对象模式如何理…

DataWhale-吃瓜教程学习笔记 (七)

学习视频**:第6章-支持向量机_哔哩哔哩_bilibili 西瓜书对应章节: 第六章 支持向量机 - 算法原理 几何角度 对于线性可分数据集,找距离正负样本距离都最远的超平面,解是唯一的,泛化性能较好 - 超平面 - 几何间隔 例…

MSPM0G3507——读取引脚的高低电平方法(数字信号循迹模块)

SYSCFG配置 代码部分 //第一个传感器if( DL_GPIO_readPins(xunji_PORT_PIN1_PORT , xunji_PORT_PIN1_PIN )xunji_PORT_PIN1_PIN) //黑,不亮 高{a1;}if( DL_GPIO_readPins(xunji_PORT_PIN1_PORT , xunji_PORT…

从 Keycloak 导出和导入 Realm 和用户

1. 首先对keycloak 命令有所了解 需要将 Keycloak 中的 Realm 导出或导入时,您可以使用 JSON 文件进行操作。以下是一些有关导出和导入 Realm 的方法: 导出 Realm 到目录: 使用 export 命令将 Realm 导出到目录。在执行此命令时,…

技术分享:直播平台如何开发并接入美颜SDK

本篇文章,笔者将分享直播平台如何开发并接入美颜SDK的技术细节与步骤。 一、选择合适的美颜SDK 首先,选择一款适合的美颜SDK非常重要。市面上有很多优秀的美颜SDK供应商,选择时应考虑以下因素: 功能丰富性:支持美白…