速通Redis基础(一):掌握Redis的字符串类型和命令

目录

字符串(String)

常见命令

SET

GET

MSET&MGET

SETNX 

INCR

INCRBY 

DECR

 DECRBY

INCRBYFLOAT

APPEND

GETRANGE

SETRANGE

STRLEN 

Redis字符串类型命令总结


Redis(Remote Dictionary Server)是一个高性能的开源键值存储系统,广泛用于构建快速、可扩展的应用程序。Redis提供了多种数据类型和丰富的命令集,使其成为一个强大的数据存储和缓存解决方案。在本篇博客中,我们将介绍Redis的基本数据类型和常用命令,希望大家多多支持呀😁


Redis支持多种数据类型,每种类型都具有不同的用途和特性。以下是Redis的主要数据类型:

字符串(String)

字符串是Redis中最简单的数据类型,它可以存储文本或二进制数据。Redis的字符串是可变的,可以对其进行追加、截取和操作。

常见命令

SET

语法:

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

时间复杂度:O(1) 

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

 如下代码示例:

SET 命令还可以支持多种选项来影响它的行为:

EX seconds⸺使用秒作为单位设置 key 的过期时间。

设置name zhangsan的过期时间为10秒

十秒钟之后获取:


PX milliseconds⸺使用毫秒作为单位设置 key 的过期时间。

设置name zhangsan的过期时间为1000毫秒(再获取很快就返回nil了~)


NX ⸺只在 key 不存在时才进行设置,即如果 key 之前已经存在,设置不执行。

就像下面所示,我没有name这个key才能插入,如果存在就不执行并且返回nil


XX ⸺只在 key 存在时才进行设置,即如果 key 之前不存在,设置不执行。

如下图所示,存在才能设置,我们看到zhangsan被修改为lisi了~


返回值:

1. 如果设置成功,返回 OK。

2. 如果由于 SET 指定了 NX 或者 XX 但条件不满足,SET 不会执行,并返回 (nil)。 

GET

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

语法:

GET key

时间复杂度:O(1)

返回值:

key 对应的 value,或者 nil 当 key 不存在。 

MSET&MGET

MEST

⼀次性设置多个 key 的值。

语法:

MSET key value [key value ...]

时间复杂度:O(N) N 是 key 数量

返回值:永远是 OK

MGET

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

语法:

MGET key [key ...]

时间复杂度:O(N) N 是 key 数量

返回值:对应 value 的列表

示例:

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

所以使用批量操作,可以有效提高业务处理效率,但是要注意,每次批量操作所发送的键的数量也不是无节制的,否则可能造成单⼀命令执行时间过长,导致 Redis 阻塞。  

SETNX 

设置 key-value 但只允许在 key 之前不存在的情况下。

语法:

SETNX key value

时间复杂度:O(1) 

INCR

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

语法:
 

INCR key

时间复杂度:O(1)

返回值:integer 类型的加完后的数值。

示例:

INCRBY 

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

语法:

INCRBY key decrement

时间复杂度:O(1)

返回值:integer 类型的加完后的数值。

示例:

DECR

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

语法:

DECR key

时间复杂度:O(1)

返回值:integer 类型的减完后的数值。

示例:

 DECRBY

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

语法:

 DECRBY key decrement

时间复杂度:O(1)

返回值:integer 类型的减完后的数值。

示例:

INCRBYFLOAT

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

语法:

INCRBYFLOAT key increment

时间复杂度:O(1)

返回值:加/减完后的数值

示例:

APPEND

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

语法:

APPEND KEY VALUE

时间复杂度:O(1)

返回值:追加完成之后 string 的长度

示例:

GETRANGE

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

语法:

GETRANGE key start end

时间复杂度:O(N). N 为 [start, end] 区间的⻓度. 由于 string 通常⽐较短, 可以视为是 O(1)

返回值:string 类型的子串

示例:

SETRANGE

覆盖字符串的⼀部分,从指定的偏移开始。

语法:

SETRANGE key offset value

时间复杂度:O(N), N 为 value 的长度. 由于⼀般给的 value ⽐较短, 通常视为 O(1).

返回值:替换后的 string 的长度。

示例:

STRLEN 

获取 key 对应的 string 的长度。当 key 存放的类似不是 string 时,报错。

语法:

STRLEN key

时间复杂度:O(1)

返回值:string 的长度。或者当 key 不存在时,返回 0

示例:

Redis字符串类型命令总结

命令执行效果时间复杂度
set key value [key value...]设置 key 的值是 valueO(k), k 是键个数
get key获取 key 的值O(1)
del key [key ...]删除指定的 keyO(k), k 是键个数
mset key value [key value ...]批量设置指定的 key 和 valueO(k), k 是键个数
mget key [key ...]批量获取 key 的值O(k), k 是键个数
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/150131.html

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

相关文章

【14】c++设计模式——>工厂模式

简单工厂模式的弊端 简单工厂模式虽然简单,但是违反了设计模式中的开放封闭原则,即工厂类在数据增加时需要被修改,而我们在设计时对于已经设计好的类需要避免修改的操作,而选用扩展的方式。 工厂模式设计 简单工厂模式只有一个…

河北吉力宝:国内顶尖资源荣誉共筑全景融合新商业生态

随着科技的不断发展和社会的进步,新兴企业纷纷崭露头角,展现出令人瞩目的商业潜力。随着科技的不断演进和社会的持续进步,新兴企业正崭露头角,显露出巨大的商机。在这个时代,合作和资源整合变得至关重要。河北吉力宝智…

【java爬虫】使用vue+element-plus编写一个简单的管理页面

前言 前面我们已经将某宝联盟的数据获取下来了,并且编写了一个接口将数据返回,现在我们需要使用vueelement-plus编写一个简单的管理页面进行数据展示,由于第一次使用vue编写前端项目,所以只是编写了一个非常简单的页面。 项目结…

高速数字化仪为您带来高效RF测量秘籍!(二)

上一章主要介绍了虹科高速数字化仪的特点、RF测试选型以及RF动态范围测量示例,本章将继续为大家介绍多通道采集分析正交调制信号、RF频率响应测量等内容。 RF测试分析 数字化仪获取数据并将其用于测量和分析。在这些例子中,虹科SBench6用于分析测试数据…

对干扰SAY NO!GNSS模拟将提供伽利略OS-NMA功能(一)

新一代卫星应用程序依赖灵活且准确的GNSS信号作为许多关键项目的重点要素,以确保高精度的定位、导航和授时(PNT)数据。虹科Safran提供了GNSS仿真测试解决方案,旨在确保复杂GNSS应用系统的高性能、高弹性和高准确性。 现状 GNSS技…

位移贴图和法线贴图的区别

位移贴图和法线贴图都是用于增强模型表面细节和真实感的纹理贴图技术,但是它们之间也存在着差异。 1、什么是位移贴图 位移贴图:位移贴图通过在模型顶点上定义位移值来改变模型表面的形状。该贴图包含了每个像素的高度值信息,使得模型的细节…

2023年中国短租公寓主要类型、品牌及行业市场规模分析[图]

短租是一种以24小时为计量单位、按天计费的房屋租赁形式,短租又称日租。短租房有高性价比、特色、浓厚居家感的特点,比起传统酒店的客房更具竞争优势。当前,短租房已经成为人们出行住宿的新选择。短租公寓主要类型有合租公寓、月租公寓、服务…

Python 数据分析与挖掘(一)

Python 数据分析与挖掘(数据探索) 数据探索 1.1 需要掌握的工具(库) 1.1.1 Nump库 Numpy 提供多维数组对象和各种派生对象(类矩阵),利用应用程序接口可以实现大量且繁琐的数据运算。可以构建…

Minecraft个人服务器搭建自己的皮肤站并实现外置登录更换自定义皮肤组件

Minecraft个人服务器搭建自己的皮肤站并实现外置登录更换自定义皮肤组件 大家好,我是艾西有不少小伙伴非常喜欢我的世界Minecraft游戏,今天小编跟大家分享下Minecraft个人服务器怎么设置皮肤站。 Minecraft皮肤站是什么?其实官网就有皮肤站…

Overloud TH-U Complete for Mac:演绎您的音乐世界

Overloud TH-U Complete for Mac是一款功能强大的吉他谱曲软件,可以让您在Mac电脑上轻松进行吉他模拟、录音和混音等操作,创作属于自己的音乐作品。 Overloud TH-U Complete for Mac提供了丰富的吉他模拟和音效库,涵盖了多种吉他放大器、箱体…

腾讯云服务器简介_CVM优势_常见问题解答

腾讯云服务器CVM提供安全可靠的弹性计算服务,腾讯云明星级云服务器,弹性计算实时扩展或缩减计算资源,支持包年包月、按量计费和竞价实例计费模式,CVM提供多种CPU、内存、硬盘和带宽可以灵活调整的实例规格,提供9个9的数…

1600*C. Good Subarrays(找规律前缀和)

Problem - 1398C - Codeforces 解析: 可以写出 sum[ j ] - sum[ i ] j - i 1,对其移项得 sum[ j ] - j sum[ i ] - (i - 1),问题转换为有多少个前缀和相等,则用map遍历统计一遍即可。 注意,当…

数据结构——AVL树(详解 + C++模拟实现)

文章目录 前言AVL树的概念AVL树节点的定义AVL树类框架AVL树的插入AVL树的旋转新节点插入较高子树的左侧 —— 左左: 右单旋新节点插入较高右子树的右侧——右右: 左单旋新节点插入较高左子树的右侧 —— 左右: 先左单旋然后再有单旋新节点插入较高右子树的左侧&…

【JavaEE重点知识归纳】第5节:方法

目录 一:方法的概念和使用 1.什么是方法 2.方法的定义 3.方法的调用过程 4.实参和形参的关系(重点) 二:方法重载 1.方法重载概念 2.方法签名 三:递归 1.递归的概念 2.递归执行的过程分析 一:方法的概念和使…

qt 5.15.2 安卓 macos

macos环境安卓配置 我的系统是monterey12.5.1 打开qt的配置界面 这里版本是java1.8,注意修改这个json文件,显示包内容 {"common": {"sdk_tools_url": {"linux": "https://dl.google.com/android/repository/comm…

1500*B. Zero Array(贪心数学找规律)

Problem - 1201B - Codeforces 解析&#xff1a; 因为每次减少2&#xff0c;如果总和为奇数肯定无法实现。 特例&#xff0c;如果某个数大于其他所有数的总和&#xff0c;同样无法实现。 其他均可实现。 #include<bits/stdc.h> using namespace std; #define int long l…

给 Linux0.11 添加网络通信功能 (Day1: 确认 qemu-system-i386 提供了虚拟网卡)

感觉单纯读闪客的文章&#xff0c;以及读 Linux0.11 源码&#xff0c;而不亲自动手做点什么&#xff0c;很难学会&#xff0c;还是得写代码 定个大目标&#xff1a;给 Linux0.11 添加网络通信功能 今日的小目标&#xff1a;先确认 qemu-system-i386 提供了网卡功能 here we …

C++入门-day03

引言&#xff1a;本节我们讲一下C中的引用 一、引用 先看一下下面这段代码&#xff1a; 在这段代码中。我们命名了两个变量&#xff0c;a和_a&#xff0c;其中_a就是a的引用 所谓引用就是a的“别名”&#xff0c;我们看一下这段代码的运行结果&#xff1a; 发现其地址一样&…

导出视频里的字幕

导出视频里的字幕 如何利用剪映快速提取并导出视频里的字幕 https://jingyan.baidu.com/article/c35dbcb0881b6fc817fcbcd2.html 如何快速提取视频中的字幕&#xff1f;给大家介绍一种简单高效又免费的提取方法。需要利用到“剪映”&#xff0c;以下是具体的操作步骤和指引&a…