【Redis】Redis常用命令一

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.rhkb.cn/news/275653.html

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

相关文章

C语言游戏实战(4):人生重开模拟器

前言: 人生重开模拟器是前段时间非常火的一个小游戏,接下来我们将一起学习使用c语言写一个简易版的人生重开模拟器。 网页版游戏: 人生重开模拟器 (ytecn.com) 1.实现一个简化版的人生重开模拟器 (1) 游戏开始的时…

Pytest测试中的临时目录与文件管理!

在Pytest测试框架中,使用临时目录与文件是一种有效的测试管理方式,它能够确保测试的独立性和可重复性。在本文中,我们将深入探讨如何在Pytest中利用临时目录与文件进行测试,并通过案例演示实际应用。 为什么需要临时目录与文件&a…

【李沐论文精读】GPT、GPT-2和GPT-3论文精读

论文: GPT:Improving Language Understanding by Generative Pre-Training GTP-2:Language Models are Unsupervised Multitask Learners GPT-3:Language Models are Few-Shot Learners 参考:GPT、GPT-2、GPT-3论文精读…

「金三银四」,你遇到过哪些奇葩题目?参与出题可领取腾讯新春定制祥龙公仔哦!

「金三银四」,是职场人在每年春季最忙的时期之一。在这个时期,各大企业都会举行各种各样的面试和笔试,而这些面试中出现的题目往往千奇百怪,有时候甚至让人捧腹大笑 ! 为此,腾讯云开发者社区预计推出以「金…

【C++基础】3.第一个C++程序“Hello world!”——《跟老吕学C++编程语言》

【C基础】3.第一个C程序——《跟老吕学C编程语言》 第一个C程序“Hello world!”1.创建新项目2.选择“控制台程序”3.命名存储4.输入代码5.编译运行 第二个C程序“你好,世界!”1.输入代码2.编译运行 C语言跟C语言的区别1.结构不同2.设计不同3…

Linux常用操作命令

Linux常用操作命令 1.文件管理catfile 2.文档编辑3.文件传输4.磁盘管理5.磁盘维护6.网络通讯7.系统管理8.系统设置9.备份压缩10.设备管理 Linux 英文解释为 Linux is not Unix。 Linux内核最初只是由芬兰人李纳斯托瓦兹(Linus Torvalds)在赫尔辛基大学上…

OpenCV读取tensorflow神经网络模型:SavedModel格式转为frozen graph的方法

本文介绍基于Python的tensorflow库,将tensorflow与keras训练好的SavedModel格式神经网络模型转换为frozen graph格式,从而可以用OpenCV库在C 等其他语言中将其打开的方法。 如果我们需要训练并使用一个神经网络模型,一般情况下都是首先借助Py…

react 综合题-旧版

一、组件基础 1. React 事件机制 javascript 复制代码<div onClick{this.handleClick.bind(this)}>点我</div> React并不是将click事件绑定到了div的真实DOM上&#xff0c;而是在document处监听了所有的事件&#xff0c;当事件发生并且冒泡到document处的时候&a…

利用Java实现数据矩阵的可视化

1. 引言 在进行工程开发时&#xff0c;通常需要在窗口的某个区域将有效数据形象化地呈现出来&#xff0c;例如&#xff1a;对于某一区域的高程数据以伪色彩的方式呈现出高度的变化&#xff0c;这就需要解决利用Java进行数据呈现的问题。本文将建立新工程开始&#xff0c;逐步地…

UDP数据报套接字编程

1.1UDP编程原理 对于UDP协议来说&#xff0c;具有无连接&#xff0c;面向数据报的特征&#xff0c;即每次都是没有建立连接&#xff0c;并且一次发送全部数据报&#xff0c;一次接收全部的数据报。Java中使用UDP协议通信&#xff0c;主要基于DatagramSocket类来发送或接收数据报…

NBlog整合OSS图库

NBlog部署维护流程记录&#xff08;持续更新&#xff09;&#xff1a;https://blog.csdn.net/qq_43349112/article/details/136129806 由于项目是fork的&#xff0c;所以我本身并不清楚哪里使用了图床&#xff0c;因此下面就是我熟悉项目期间边做边调整的。 目前已经调整的功能…

Docker容器Docker桌面配置镜像加速

打开Docker Desktop应用程序&#xff0c;点击设置 具体配置如下&#xff1a; {"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"features": {"buil…

个人博客系列-后端项目-用户注册功能(7)

介绍 用户注册API的主要流程&#xff1a;1.前端用户提交用户名&#xff0c;密码 2. 序列化器校验用户名&#xff0c;密码是否合法。3.存入数据库。4.签发token 创建序列化器 from rest_framework import serializers from rest_framework_simplejwt.serializers import Toke…

防御安全(IPSec实验)

目录 需求&#xff1a; pc1 ping通 pc2 ,使用IPSec VPN 拓扑图&#xff1a; ​编辑实验配置&#xff1a; 注意&#xff1a; 直接在路由器r1和r2分别配置即可&#xff0c;路由器r1和r2要写一条缺省指向ISP 实验配置截图如下&#xff1a; 2. r1​编辑 3. r3​编辑 3.r…

Electron程序如何在MacOS下获取相册访问权限

1.通过entitiment.plist&#xff0c;在electron-builder签名打包时&#xff0c;给app包打上签名。最后可以通过codesign命令进行验证。 TestPhotos.plist electron-builder配置文件中加上刚刚的plist文件。 通过codesign命令验证&#xff0c;若出现这个&#xff0c;则说明成…

[BJDCTF2020]Cookie is so stable

hint提示查看cookies flag.php页面我们先随便输入一个名字 输入后我们重新进一次flag.php&#xff0c;发现cookie里存储了刚刚登陆时输入的用户名&#xff0c;直接猜是ssti 尝试后根据ssti特征判断是twig模板 {{_self.env.registerUndefinedFilterCallback("exec")…

VUE实现Provide的计算属性

通过此篇可以学到&#xff1a; 如何使用Providerinject进行“跨代”传值如何实现一个计算属性的Provider如何解决告警“injection "xxxxx" not found. ” 一、描述 目前需要创建一个计算属性传入Provide&#xff0c;并且能够被其他组件Inject 二、实现 父组件 .…

计算机网络—OSPF单区域配置

目录 目录 1.实验环境准备 2.配置 OSPF 3.验证 OSPF 配置 4.修改 OSPF hello 和 dead 时间参数 5.OSPF缺省路由发布及验证 6.控制 OSPF DR/BDR 的选举 7.配置文件 拓扑图&#xff1a; 1.实验环境准备 基本配置以及IP编址。 <Huawei>system-view Enter system vi…

Tomcat多实例及nginx反向代理tomcat

tomcat多实例介绍&#xff1a; 什么是Tomcat多实例&#xff1f; Tomcat多实例就是指在同一台服务器上运行多个独立的tomcat实例&#xff0c;每个实例之间都是相互隔离的。每个tomcat实例都具有独立的配置文件、日志文件、应用程序和端口。通过配置不同的端口和文件目录&#xf…

如何有效避免团队内耗,提升团队整体效能

团队内耗是一个普遍存在的问题&#xff0c;它可能导致工作效率低下、沟通不畅、成员间的信任缺失&#xff0c;甚至可能导致整个团队的崩溃。 它可能源于成员间的误解、利益冲突&#xff0c;或是个人情绪的波动。 如何避免团队内耗&#xff0c;是每个团队管理者和成员都应该关…