Redis——通用命令

news2024/11/15 18:48:42

目录

  • Redis通用命令
      • Redis中最核心的两个命令
        • get
        • set
      • Redis全局命令
        • keys
          • 语法
          • 注意事项
        • exists
        • del(delete)
        • expire
        • ttl
        • redis的key的过期策略是怎么实现的?
          • **了解拓展**
        • type
        • 总结

Redis通用命令

Redis的命令非常非常多,所以

1. 掌握常用命令(多操作练习)
2. 学会使用Redis的文档

Redis官方链接
在这里插入图片描述

Redis中最核心的两个命令

get
根据key来取value
set
把key和value存储进去
key和value本质都是字符串

必须要进入redis客户端才能执行redis命令

set key value

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

redis中的命令不区分大小写

get key

get命令直接输入key就能得到value,如果当前key不存在,会返回一个nui 和 null/NULL是一个意思

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Redis全局命令

Redis支持很多种数据结构,整体来说Redis是键值对结构,key固定就是字符串,value实际上会有很多种类型(常用的有 字符串,哈希表,列表,集合,有序集合)————操作不同的数据结构,就会有不同的命令

全局命令,就是能够任意搭配任意一个数据结构来使用的命令

keys

用来查询当前服务器上匹配的key,通过一些特殊符号(通配符)来描述key的模样,匹配上述模样的key就能被查询出来

语法
keys pattern

/*pattern 用来描述另外的字符串是长什么样的
具体写法,支持那些通配符?
1. ? 匹配任意一个字符
2. * 匹配0个或者多个任意字符
3. [abcde] 只能匹配到a,b,c,d,e
4. [^e] 排除e,只有e匹配不了,其他的都能匹配
5. [a-b] 匹配a-b这个范围内的字符,包含两侧边界
*/

在这里插入图片描述

  1. 匹配任意一个字符

    在这里插入图片描述

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

    在这里插入图片描述

  3. [abcde] 只能匹配到a,b,c,d,e

在这里插入图片描述

  1. [^e] 排除e,只有e匹配不了,其他的都能匹配
    在这里插入图片描述

  2. [a-b] 匹配a-b这个范围内的字符,包含两侧边界

在这里插入图片描述

注意事项
keys的时间复杂度为O(n),所以,在生产环境上,一般都会禁止使用keys命令,尤其是keys
生产环境上的keys可能会非常的多,而redis是一个单线程的服务器,执行keys*的时间非常长,就导致redis服务器被阻塞了,无法给其他客户端提供服务
redis经常会用于做缓存,挡在mysql的前面,玩意Redis被一个kesy*阻塞住,此时其他的redis操作就超时了,此时这些请求就会直接查数据库,突然有一大波请求过来,mysql措手不及,就容易挂,从而导致整个系统直接瘫痪
exists
EXISTS key [key ...] 判断某个key是否存在
返回值:key存在的个数。  针对多个key来说是非常有用的
时间复杂度 O(1) ————> redis组织这些key就是按照哈希表的方式来组织的 相当于unordered_map<key,value>

在这里插入图片描述

del(delete)
DEL key [key ...] 删除指定的key,可以一次删除一个或者多个

在之前学mysql的时候,删除类的操作,就很危险,一旦删除了之后,数据局就没了
但是redis主要的应用场景,就是作为缓存,此时 redis里存的只是热点数据
全量数据存在mysql数据库中,此时如果把redis中的key删除了几个,一般来说问题不大
如果把redis作为数据库,此时误删数据影响就大了

在这里插入图片描述

expire
EXPIRE key seconds
时间复杂度 O(1)
返回值:1表示成功,0表示设置失败
设置毫秒:  pexpire key ms
作用是给指定的key设置过期时间,key存活时间超出这个指定的值,就会被自动删除
比如手机验证码,几分钟内有效,就可以用到,还有外卖优惠券,在指定时间之内有效等

在这里插入图片描述

ttl

TTL key

获取指定的过期时间

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

redis的key的过期策略是怎么实现的?

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

如果直接遍历所有的key,显然是行不通的,效率非常低

Redis整体的策略是:

  • 定期删除

  • +

  • 惰性删除

  1. 什么叫惰性删除,假设这个key已经到时间了,但是暂时还没删除它,key还存在,紧接着后面又一次访问正好用到了这个key,于是这次访问会让redis服务器触发删除key的操作,同时返回一个nil——————感觉这种方式有点像单例模式里的懒汉模式
  2. 为什么对于定期删除的时间,有明确的要求? 因为redis是单线程的程序,如果扫描过期key消耗的时间太长,正常处理请求命令就被阻塞了
  3. 虽然有了这两种策略结合,但是整体效果一般,仍然会有很多过期的key残留,没有及时删除掉,所以redis为了对上述进行补充,还提供了一系列的内存淘汰策略
了解拓展

定时删除:设置定时器,在时间到了之后,对其删除。

  • redis中并没有采取定时器的方式来实现过期key的删除,所以定期删除和定时器并没有关系

定时器:在某个时间到达之后,执行指定的任务

实现方式:

  1. 基于优先级队列/堆

在redis过期key的场景中,就可以通过“过期时间越早,优先级越高”,过期时间早的,先出队列。也就意味着,此时定时器中只要分配一个线程,让这个线程去检查队首元素,看是否过期即可,如果队首元素还没过期,后续元素一定没有过期。扫描线程不需要遍历所有的key,只盯住这一个队首元素即可;另外在扫描线程检查队首元素过期时间的时候,也不能检查的太频繁,此时做法就可以根据当前时刻和队首元素的过期时间,设置一个等待时间,等时间差不多到了,系统再唤醒在这个线程。——>此时扫描线程不需要高频扫描队首元素,把CPU的开销也省了下来。

  1. 基于时间轮实现的定时器

把时间划分成很多小段,没小段上都挂着一个链表,每个链表都代表一个要执行的任务(相当于一个函数指针),每次走到一个格子,就会把这个格子上的链表的任务尝试执行以下。

Redis并没有采取上述的方案

type
语法:TYPE key
时间复杂度:O(1)
返回值:key对应的vualue的数据类型[none,string,list,set,zset,hash,stream,...]

在这里插入图片描述

总结
  • keys:用来查看匹配规则的key
  • exists:用来判定指定key是否存在
  • del:删除指定的key
  • expire:给key设置过期时间
  • ttl:查询key的过期时间
  • type:查询key对应的value的类型

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

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

相关文章

ardunio超声波测距实验

工作原理 模块有2个超声波换能器&#xff08;如图所示&#xff09;&#xff0c;一个发出声波&#xff0c;另一个接收物体反射回来的声波&#xff0c;这中间所经过的时间即声波传播的时间&#xff0c;再结合声速就能计算出&#xff1a; 距离 声速 * 时间 2 如何使用HC-SR04模块…

从OracleCloudWorld和财报看Oracle的转变

2024年9月9-12日Oracle Cloud World在美国拉斯维加斯盛大开幕 押注AI和云 Oracle 创始人Larry Ellison做了对Oracle战略和未来愿景的主旨演讲&#xff0c;在演讲中Larry将AI技术和云战略推到了前所未有的高度&#xff0c;从新的Oracle 23c改名到Oracle23ai&#xff0c;到Oracl…

unity3d入门教程一

unity3d入门教程一 2.1-开发环境2.2 新建项目3.1编辑器页面3.2场景3.3添加资源4.1场景视图4.2游戏对象4.3坐标系4.4游戏对象的操作4.5摄像机 2.1-开发环境 https://unity.com/ https://unity.cn/ 安装时若卡住&#xff0c;打开路径自动安装 C:\Users\zhaocai\AppData\Local\T…

信息安全国内外现状及技术要求示例(R155/R156)

国际政策、 法规的现状与趋势 鉴于对交通安全、社会安全甚至国家安全的重要影响&#xff0c;汽车网络安全、数据安全得到各相关国家和地区的高度重视&#xff0c;纷纷出台相关法规、标准。 信息安全法规 R155 法规适用范围覆盖了乘用车及商用车&#xff0c;适用于 M 类、N 类…

北斗盒子:海上安全的智能守护者——落水报警应用案例

海上环境多变&#xff0c;无论是航行还是作业活动&#xff0c;安全始终是最重要的考量。近年来&#xff0c;我国大力发展海上经济&#xff0c;海上作业的增加也带来了溺水事故的频发&#xff0c;给家庭和社会带来沉重的伤痛。据世界卫生组织统计&#xff0c;溺水是世界各地非故…

SQL(结构性查询语句)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、SQL是什么&#xff1f;二、DDL三、DML四、DQL五、DCL总结 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、SQL是什么&#xff…

【R语言】删除数据框中所有行中没有大于200的数值的行

在Perl中还需要循环按行读入文件&#xff0c;而在R中&#xff0c;一行代码解决问题&#xff1a; df <- df[apply(df, 1, function(x) any(x > 200)), ]这是一个使用apply函数对数据框df进行操作的表达式。apply函数用于对数据框、矩阵或数组进行元素级别的操作。 df&am…

虚拟机安装教程

做一期详细的虚拟机安装教程 VM16.12版本下载地址&#xff1a;联想乐云 VM16版本许可证&#xff1a;ZF3R0-FHED2-M80TY-8QYGC-NPKYF 第一步双击打开安装包&#xff1a; 选择安装位置&#xff0c;选择空间充足的磁盘&#xff0c;一般不建议直接装c 取消勾选 等待安装 输入许可…

sqli-labs靶场自动化利用工具——第6关

文章目录 概要整体架构流程技术细节执行效果小结 概要 Sqli-Labs靶场对于网安专业的学生或正在学习网安的朋友来说并不陌生&#xff0c;或者说已经很熟悉。那有没有朋友想过自己开发一个测试脚本能实现自动化化测试sqli-labs呢&#xff1f;可能有些人会说不是有sqlmap&#…

中信银行信用卡中心社招:TAS人才测评系统题库及通关攻略更新了!

中信银行信用卡中心&#xff08;以下简称“卡中心”&#xff09;是中信银行在深圳设立的对信用卡业务进行统一管理、集中操作、独立核算的专营机构。2002年底&#xff0c;由中信银行总行与中信嘉华银行在深圳合作筹建成立&#xff1b;卡中心自成立伊始&#xff0c;始终坚持“以…

Windows系统一键启动Redis脚本

Redis 是一个开源的、高性能的键值存储数据库&#xff0c;广泛应用于缓存、数据分析、消息队列等场景。无论是在开发环境还是生产环境中&#xff0c;快速启动 Redis 服务都是非常重要的。为此&#xff0c;本文将介绍如何在 Windows 系统中创建一键启动 Redis 的脚本&#xff0c…

网络安全 L2 Introduction to Cryptography 密码学

Definitions 1. crypto - hidden/secret grafia - writing 2. “the science and study of secret writing” 3. Cryptography is the science of protecting data, which provides means of converting data into unreadable form, so that 1. the data cannot be ac…

make 程序规定的 makefile 文件的书写语法(2)

&#xff08;13&#xff09;接着开始一个更复杂的例子&#xff0c;课程的素材 2 &#xff0c;先给出书写 makefile 的框架 &#xff1a; &#xff08;14&#xff09; &#xff08;15&#xff09; 谢谢

0x07 Nginx越界读取缓存漏洞 CVE-2017-7529 复现

参考&#xff1a; Nginx越界读取缓存漏洞 CVE-2017-7529 | PeiQi文库 (wgpsec.org)Nginx越界读取缓存漏洞&#xff08;CVE-2017-7529&#xff09;复现分析 - qweg_focus - 博客园 (cnblogs.com) 一、fofa 搜索 nginx && port"80" 我这里写了个脚本将ip保存…

el-form之表单校验自动定位到报错位置问题,,提升用户体验

需求描述 由于需要填写的表单项太多&#xff0c;提交的时候校验不通过&#xff0c;如果没填写的表单项在最上面&#xff0c;用户看不到不知道发生了啥&#xff0c;所以需要将页面滚动定位到第一个报错的表单项位置&#xff0c;提升用户体验 实现步骤 点击保存校验 报错项class会…

opencv 之 实战项目 识别银行卡上的数字

OpenCV 之 实战项目&#xff1a;识别银行卡上的数字 引言 在日常生活中&#xff0c;银行卡的识别是一个常见的需求&#xff0c;特别是在金融领域。本实战项目旨在使用 OpenCV 库来识别银行卡上的数字。我们将通过模板匹配的方法&#xff0c;结合图像处理技术&#xff0c;来准…

【网络安全】基础知识详解(非常详细)零基础入门到精通

一、什么是网络安全&#xff1f; 百度上对“网络安全”是这么介绍的&#xff1a; “网络安全是指网络系统的硬件、软件及其系统中的数据受到保护&#xff0c;不因偶然的或者恶意的原因而遭受到破坏、更改、泄露、系统连续可靠正常地运行&#xff0c;网络服务不中断。” 嗯…是不…

Xubuntu22.04之四种方式:查看U盘、硬盘格式(二百六十七)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…

【操作系统】二、进程管理:4.死锁(银行家算法、系统安全状态、静态分配策略、资源有序分配法)

五、死锁 文章目录 五、死锁1.产生1.1产生情况1.2产生的4个必要条件 2.处理方式2.1预防死锁2.1.1破坏互斥条件2.1.2破坏请求和保持条件2.1.3破坏不可抢占条件2.1.4破坏循环等待条件 2.2避免死锁2.2.1系统安全状态❗2.2.2银行家算法 2.3检测死锁2.4解除死锁 死锁&#xff1a;资源…

用centos安装远程迅雷失败,重写程序做一台下载服务器

安装远程迅雷的时候&#xff0c;要不是安装包地址过期&#xff0c;就是出现64不兼容32的libz.so.1的包&#xff0c;而且32位的libz包也是好多网站过期。 没办法用仅有的python3&#xff0c;用flask搭建了一个小型的内网下载服务器&#xff0c;当然&#xff0c;只要路由器做映射…