【Redis】Redis常用命令一

news2024/11/15 11:15:33

1.keys:返回所有满足条件的key,比如:

KEYS pattern

时间复杂度:O(N),返回值:匹配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 *,因为生产环境上key可能会非常多,而redis是一个单线程的服务器,执行keys *可能时间非常长,这样就会使Redis阻塞无法给其他客户端提供服务!!

2.exists:判断某个key是否存在。

EXISTS key [key ...]

时间复杂度:O(1),返回值:key存在的个数。
在这里插入图片描述

3.del:删除指定的key。

DEL key [key ...]

时间复杂度:O(1),返回值:成功删除key的个数。
在这里插入图片描述

4.expire:为指定的key添加秒级的过期时间。

ttl:获取指定key的过期时间。

EXPIRE key seconds
TTL key

时间复杂度:O(1),返回值:1表示设置成功。0表示设置失败。

时间复杂度:O(1),返回值:剩余过期时间。-1表示没有关联过期时间,-2表示key不存在。
在这里插入图片描述

5.type:返回key对应的数据类型。

TYPE key

时间复杂度:O(1),返回值: none , string , list , set , zset , hash ,stream 。

6.set:将string类型的value设置到key中。如果key之前存在,则覆盖,无论原来的数据类型是什么,之前关于此key的ttl也全部失效。

SET key value [expiration EX seconds|PX milliseconds] [NX|XX]

如果设置成功,返回OK。如果由于set指定了NX或者XX但条件不满足,set不会执行,并返回(nil)。

时间复杂度:O(1)
• EX seconds⸺使用秒作为单位设置key的过期时间。
• PX milliseconds⸺使用毫秒作为单位设置key的过期时间。
• NX ⸺只在key不存在时才进行设置,即如果key之前已经存在,设置不执行。
• XX ⸺只在key存在时才进行设置,即如果key之前不存在,设置不执行。
在这里插入图片描述

7.get:获取key对应的value。如果key不存在,返回nil。如果value的数据类型不是string,会报错 。

GET key

时间复杂度:O(1),返回值:key对应的value,或者nil当key不存在。
在这里插入图片描述

8.mget:⼀次性获取多个key的值。如果对应的key不存在或者对应的数据类型不是string,返回nil。

MGET key [key ...]

时间复杂度:O(N)N是key数量,返回值:对应value的列表。
在这里插入图片描述

9.mset:⼀次性设置多个key的值。

MSET key value [key value ...]

时间复杂度:O(N)N是key数量,返回值:永远是OK。
在这里插入图片描述

多次get和单次mget区别
在这里插入图片描述

使⽤mget/mset由于可以有效地减少了网络时间,所以性能相较更⾼。假设网络耗时1毫秒,命令执行时间耗时0.1毫秒 。

1000次get耗时1000x1+1000x0.1=1100毫秒,1次mget1000个键耗时1x1+1000x0.1=101毫秒.

但是要注意,每次批量操作所发送的键的数量也不是⽆节制的,否则可能造成单⼀命令执⾏时间过⻓,导致Redis阻塞.

10.setnx:设置key-value,但只允许在key不存在的情况下设置。

SETNX key value

时间复杂度:O(1),返回值:1表示设置成功。0表示没有设置。
在这里插入图片描述

11、incr:将key对应的string表⽰的数字加1。如果key不存在,则视为key对应的value是0。如果key对应的string不是⼀个整型或者范围超过了64位有符号整型,则报错。

INCR key

时间复杂度:O(1),返回值:integer类型的加完后的数值

12.incrby:将key对应的string表⽰的数字加上对应的值。如果key不存在,则视为key对应的value是0。如果key对应的string不是⼀个整型或者范围超过了64位有符号整型,则报错。

INCRBY key decrement

时间复杂度:O(1),返回值:integer类型的加完后的数值

13.decr:将key对应的string表⽰的数字减⼀。如果key不存在,则视为key对应的value是0。如果key对应的string不是⼀个整型或者范围超过了64位有符号整型,则报错。

DECR key

时间复杂度:O(1),返回值:integer类型的减完后的数值。

14.decrby:将key对应的string表⽰的数字减去对应的值。如果key不存在,则视为key对应的value是0。如果key对应的string不是⼀个整型或者范围超过了64位有符号整型,则报错。

DECRBY key decrement

时间复杂度:O(1),返回值:integer类型的减完后的数值。

15。incrbyfloat:将key对应的string表⽰的浮点数加上对应的值。如果对应的值是负数,则视为减去对应的值。如果key不存在,则视为key对应的value是0。如果key对应的不是string,或者不是⼀个浮点数,则报错。允许采⽤科学计数法表⽰浮点数。

INCRBYFLOAT key increment

时间复杂度:O(1),返回值:加/减完后的数值 。
在这里插入图片描述

16.append:如果key已经存在并且是⼀个string,命令会将value追加到原有string的后边。如果key不存在,则效果等同于set命令。

APPEND KEY VALUE

时间复杂度:O(1).追加的字符串⼀般⻓度较短,可以视为O(1),返回值:追加完成之后string的⻓度。
在这里插入图片描述

17.getrange:返回key对应的string的⼦串,由start和end确定(左闭右闭)。可以使⽤负数表⽰倒数。-1代表倒数第⼀个字符,-2代表倒数第⼆个,其他的与此类似。超过范围的偏移量会根据string的⻓度调整成正确的值。

GETRANGE key start end

时间复杂度:O(N).N为[start,end]区间的⻓度.由于string通常⽐较短,可以视为是O(1)
返回值:string类型的⼦串
在这里插入图片描述

18.setrange:覆盖字符串的⼀部分,从指定的offset开始

SETRANGE key offset value

时间复杂度:O(N),N为value的⻓度.由于⼀般给的value⽐较短,通常视为O(1).返回值:替换后的string的⻓度
在这里插入图片描述

19.strlen:获取key对应的string的⻓度。当key存放的类似不是string时,报错。

STRLEN KEY

时间复杂度:O(1),返回值:string的⻓度。或者当key不存在时,返回0。
在这里插入图片描述

总结:

命令解释时间复杂度
set key value [keyvalue…]设置key的值是valueO(n),n是键个数
get key获取key的值O(1)
del key [key…]删除指定的keyO(n),n是键个数
mset key value [keyvalue …]批量设置指定的key和valueO(n),n是键个数
mget key [key…]批量获取key的值O(n),n是键个数
incr key指定的key的值 +1O(1)
decr key指定的key的值 -1O(1)
incrby key n指定的key的值 +nO(1)
decrby key n指定的key的值 -nO(1)
incrbyfloat key n指定的key的值+nO(1)
append key value指定的key的值追加valueO(1)
strlen key获取指定key的值的⻓度O(1)
setrange key offset value覆盖指定key的从offset开始的部分值O(n),n是字符 串⻓度,通常视 为O(1)
getrange key start end获取指定key的从start到end的部分值O(n),n是字符 串⻓度,通常视 为O(1)

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

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

相关文章

Java基于微信小程序的校园生活互助小助手

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

算法时空复杂度分析:大O表示法

文章目录 前言大O表示法3个时间复杂度分析原则常见的时间复杂度量级空间复杂度参考资料 前言 算法题写完以后,面试官经常会追问一下你这个算法的时空复杂度是多少?(好像作为一名算法工程师,我日常码代码的过程中,并没…

Codeforces Round 931 (Div. 2)题解

A. Too Min Too Max(Problem - A - Codeforces) 题目大意:给定一个数组a[],从中找到4个下标i,j,k,l,求|ai-aj||aj-ak||ak-al||al-ai|的最大值。 思路:显然随便找四个下标与顺序无关,那么我们可以先将a[]排序。那么实…

CSS:实现择色器透明度条的两种方法(附赠一个在线图片转base64网站)

一、效果展示 二、实现方式 1.锥形渐变 .main{width: 600px;height: 20px;background: repeating-conic-gradient(rgba(1, 1, 1, 0.1) 0 25%,transparent 0 50%);background-size: 20px 20px;} 2.背景图 将一个四方格图片转为base64然后直接在css中使用 .main1 {width: 600p…

Sectigo通配符

Sectigo通配符SSL证书是一种特别设计的数字证书解决方案,尤其适合拥有大量子域名的企业或组织。通过使用通配符“*”字符,这种证书可以一次性加密并验证一个主域名以及该主域名下的任意数量的子域名。比如,如果你拥有example.com作为主域名&a…

如何通过libusb直接向zebra打印机发送zpl,跨平台win/linux

环境:windows & linux & Zebra打印机gt820 windows: 之前安装了Zebra打印机官方驱动,所以先卸载掉驱动。再安装Zadig,用Zadig工具来安装WinUSB驱动。 zadig下载:Zadig - USB driver installation made easy 记住这两个数…

一站式数据采集物联网平台:智能化解决方案,让数据管理更高效、更安全

JVS物联网平台的定位 JVS是企业信息化的“一站式解决方案”,其中包括了基础的数字化底座、各种企业级能力、企业内常见的应用,如下图所示: 整体平台能力层有三大基础能力: 低代码用于业务的定义;数据分析套件用于数据的自助式分…

蓝桥杯专题 bfs习题详解

1.离开中山路 #include<iostream> #include<cstring> #include<queue> #include<algorithm> #include<string> using namespace std; int x1,x2,y1,y2; int n,n1,m1; const int N1010;typedef pair<int,int> PII; queue<PII> q;int …

一站式解决方案:uni-app条件编译及多环境配置,appid动态修改攻略!

前言 这篇文章主要介绍uniapp在Hbuilderx 中&#xff0c;通过工程化&#xff0c;区分不同环境、动态修改小程序appid以及自定义条件编译&#xff0c;解决代码发布和运行时手动切换到问题。 背景 在企业级的应用中&#xff0c;通常会分为&#xff0c;开发、联调、生产等多个环…

探索谷歌的秘密花园:Google文件系统GFS之旅(Google File System)

文章目录 &#x1f3d8;️GFS系统架构GFS系统节点类型GFS实现机制 &#x1f34e;GFS特点采用中心服务器模式不缓存数据在用户态下实现只提供专用接口 容错机制⚒️Master容错机制&#x1f504; Chunk Server容错 &#x1f6e0; 系统管理技术 &#x1f3d8;️GFS系统架构 大型分…

SSM整合项目(添加家居)

文章目录 1.需求分析2.设计结构3.编写Service层1.创建文件夹2.FurnService.java3.FurnServiceImpl.java4.单元测试 FurnServiceTest.java5.指定默认图片位置1.Furn.java 为imgPath设置默认值2.Furn.java 的全参构造器内判断imgPath是否为空 4.返回json数据的通用类com/sun/furn…

FreeRTOS操作系统学习——调试与优化

本文介绍 在FreeRTOS中&#xff0c;我们经常会运用到栈这个技术&#xff0c;我们对某个任务分配空间时&#xff0c;往往不确定分配多大空间的栈。任务拿到分配的栈后&#xff0c;大多数情况下&#xff0c;使用率都达不到80%&#xff0c;为了节省栈空间的开销&#xff0c;我们可…

k8s部署InfluxDB

&#xff08;作者&#xff1a;陈玓玏&#xff09; 1. 拉取镜像 docker pull influxdb #拉取镜像 docker run -d influxdb:latest #后台运行容器 docker exec -it 89b /bin/bash #进入容器&#xff0c;89b是容器ID的前三位 cd /usr/bin #进入容器后&#xff0c;进入此文件夹…

GNN/GCN自己学习

一、图的基本组成 V&#xff1a;点&#xff08;特征&#xff09; E&#xff1a;边 U&#xff1a;图&#xff08;全局特征&#xff09; 二、用途 整合特征&#xff08;embedding)&#xff0c;做重构 三、邻接矩阵 以图像为例&#xff0c;每个像素点周围都有邻居&#xff0c;…

HTML CSS入门:从基础到实践

&#x1f310; HTML & CSS入门&#xff1a;从基础到实践 &#x1f3a8; &#x1f4d6; 引言 HTML和CSS是构建网页的基石。HTML&#xff08;超文本标记语言&#xff09;用于创建网页内容&#xff0c;而CSS&#xff08;层叠样式表&#xff09;则用于美化这些内容。无论你是…

【嵌入式——QT】QPainter基本绘图

【嵌入式——QT】QPainter基本绘图 QPainter与QPaintDevicepaintEvent事件和绘图区QPainter主要属性QPen主要功能QBrush主要功能QPainter绘制基本图形方法图示代码示例 QPainter与QPaintDevice QPainter是用来进行绘图操作的类&#xff0c;QPaintDevice是一个可以使用QPainter…

RabbitMQ 模拟实现【一】:需求分析

文章目录 消息队列消息队列消息队列的作用图解生产者消费者模型BrokerSever 内部涉及的关键概念交换机功能消费的实现方式数据存储方式网络通信消息应答模式 消息队列模拟实现Gitee网址 消息队列 采用 SpringBoot 框架实现 消息队列 通常说的消息队列&#xff0c;简称MQ&am…

AP AUTOSAR 执行管理与状态管理的交互

本系列文章将从以下六个方面来介绍AP平台核心技术: 接下来,让我们来看第4个部分: 第四部分 执行管理与状态管理的交互 4.1 执行管理与状态管理的交互

这个班要不还是别上了吧。

先不提代码写得对不对。咱就是说&#xff0c;打印语句都出不来&#xff0c;搞个chuanchuan哟。 &#xff08;谁能给我解释一下。。&#x1f643;&#xff09;

Stable Diffusion 模型下载:Juggernaut(主宰、真实、幻想)

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 该模型是一个真实模型&#xff0c;并且具有幻想和创意色彩。 作者述&#xff1a;我选取了…