Redis 中String类型操作命令(命令演示,时间复杂度,返回值,注意事项)

String 类型

文章目录

  • String 类型
  • set 命令
  • get 命令
  • mset 命令
  • mget 命令
  • get 和 mget 的区别
  • incr 命令
  • incrby 命令
  • decr 命令
  • decrby 命令
  • incrbyfloat 命令
  • append 命令
  • getrange 命令
  • setrange 命令

字符串类型是 Redis 中最基础的数据类型,在讲解命令之前,我们先讨论以下 Redis 中的 String 类型,关于 Redis 中的 String 类型,要注意三点:

① Redis 中的 “键” 都是 String 类型,而 Redis 中的 value 是多种类型的,而在这多种中类型中,它们存储的元素类型也都是 String 类型,比如,list 类型,set 类型,存储的元素值是 String 类型。

② 如果 value 是 String 类型,它可以是一般的字符串,也可以是 JSON、XML 格式的字符串,也可以是 “数字”,二进制流数据,例如图片,但是,这里的字符串最好不要太大,否则的话读取时间会很长。

③ Redis 中 String 类型数据的存储都是按照**“二进制数据”**存储的,并且,Redis 是不处理字符集编码问题的,客户端传入的命令中,使用的是什么字符集编码,存储时就是什么字符集编码。

下面,就来简单看一下几个常用的命令:

set 命令

设置 key 和 value,在不指定选型的默认情况下,如果指定的 key 存在的话,则更新 value 值,如果 key 不存在的话,则存储 key 和 value

语法:set key [expiration EX seconds|PX milliseconds] [NX|XX]

选项解释:

EX seconds :设置 key 的过期时间,单位是:秒

PX milliseconds:设置 key 的过期时间,单位是:毫秒

NX:如果 key 不存在,则存储 key 和 value,如果 key 存在,则不能存储

XX:如果 key 存在则存储,如果 key 不存在,则不存储

时间复杂度:O(1)

返回值:ok

操作演示:

在这里插入图片描述

注意:上述我存储的 key 和 value 都是字符串类型,而在 Redis 中,字符串类型加不加引号都是可以的,以及加双引号或单引号也都不会出错。

get 命令

根据 key 获取 value,如果 value 的数据类型不是 String ,则会报错

语法:get key

时间复杂度:O(1)

返回值:key 对应的value,如果key不存在,返回 nil

操作演示:

在这里插入图片描述

mset 命令

一次设置多个 key

语法:mset key [key……]

时间复杂度:O(k),这里的 k 表示 key 的个数

返回值:ok

操作演示:

在这里插入图片描述

mget 命令

一次获取多个 key 的 value

语法:mget key [key……]

时间复杂度:O(k)

返回值:key 对应的 value

操作演示:

在这里插入图片描述

get 和 mget 的区别

要记住,Redis 的架构是“客户端-服务器”架构,每一次传入命令都是向服务器发送一次请求,是通过网络传输的,而网络传输的速度也是比较慢的,并且也可能会因为一些因素导致传输失败,毕竟网上有一句话是这样讲的:再牛的网络,也敌不过挖掘机的一铲子,所以,如果要设置多个key 或 获取多个 key 使用 get 和 mget 所发送请求的个数就相差很大,如下图:

在这里插入图片描述

在这里插入图片描述

所以,mget / mset 这种批量操作,可以有效的节约网络时间,但需要注意的时,批量操作时指定的 key 不要太多,否则的话,容易导致 Redis 阻塞。

incr 命令

将 key 对应的 String 表示的数字加1,如果 key 不存在,则设置key,并且认为 key 对应的 vlaue 的值为 0,如果,key 所对应的 value 的值不是一个数字,或者数字的范围超过了 64位有符号的整型,则报错

语法:incr key

时间复杂度:O(1)

返回值:成功加完后的数值

操作演示:

在这里插入图片描述

incrby 命令

将 key 对应的 String 表示的数字加上指定的 n,如果 key 不存在,则设置key,并且认为 key 对应的 vlaue 的值为 0,如果,key 所对应的 value 的值不是一个数字,或者数字的范围超过了 64位有符号的整型,则报错

语法:incrby key n

时间复杂度:O(1)

返回值:成功添加后的值

操作演示:

在这里插入图片描述

decr 命令

将 key 对应的 String 表示的数字减 1,如果 key 不存在,则设置key,并且认为 key 对应的 vlaue 的值为 0,如果,key 所对应的 value 的值不是一个数字,或者数字的范围超过了 64位有符号的整型,则报错

语法:decr key

时间复杂度:O(1)

返回值:成功减去后的值

操作演示:

在这里插入图片描述

decrby 命令

decrby 命令同样也是减操作,只不过是减去我们指定的数值,和上面的 incrby 命令的操作方式一样,这里就不再演示。

incrbyfloat 命令

incrbyfloat 命令是针对 value +/- 小数,操作方式同样和上面的加减命令操作方式一样,这里也不再演示。

以上一组命令都是对value是数字时进行操作的,很多存储系统和编程语⾔内部使⽤CAS机制实现计数功能,会有⼀定的CPU开销,但在Redis中完全不存在这个问题,因为Redis是单线程架构,任何命令到了Redis服务端都要顺序执⾏。

append 命令

如果 key 已经存在,并且 value 是字符串,那么 append 命令会将指定的value值拼接到字符串后面,如果不存在,用法和set一样,就会添加一个新的元素

语法:append key value

时间复杂度:O(1)

返回值:字符串的长度

操作演示:

在这里插入图片描述

getrange 命令

获取 key 对应的字符中的子串

语法:getrange key start end

start:左区间(闭)

end:右区间(闭)

并且可以使用负数表示倒数,-1 表示最后一个位置的元素,-2 表示倒数第二个位置的元素

时间复杂度:O(k),k 是[start,end]区间的长度

返回值:返回指定位置的字串

操作演示:

在这里插入图片描述

setrange 命令

覆盖字符串的一部分

语法:setrange key offset value

offset:指定需要覆盖的开始位置

value:新的字符串

时间复杂度:O(k),k 表示 value 的长度

返回值:替换后的字符串的长度

操作演示:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

论文分享|Arxiv2024‘麦吉尔大学|LLM2Vec—将LLM转换为文本编码器

LLM本身的表征直接用于Embedding,比如用于检索/聚类/STS等任务,效果其实不太好。因此才需要将Embedding模型和大模型区分开来。本文介绍一篇将LLM转换为Embedding模型的工作,代码全开源,值得好好学习。 论文题目:LLM2…

Qt Mqtt客户端 + Emqx

环境 Qt 5.14.2 qtmqtt mqttx 功能 QT Mqtt客户端 qtmqtt 下载 qtmqtt (注意下载与QT版本相符的库)并使用QT 编译 编译完成后需要的文件: emqx 1.虚拟机中安装emqx,并启动 curl -s https://assets.emqx.com/scripts/install-emqx-deb.sh | sudo bash sudo apt-get inst…

【详解】Spring Cloud概述

🎥 个人主页:Dikz12🔥个人专栏:Spring学习之路📕格言:吾愚多不敏,而愿加学欢迎大家👍点赞✍评论⭐收藏 目录 1. 认识微服务 1.1 单体架构 1.2 集群和分布式架构 1.3 集群和分布式…

【全面介绍Pip换源】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 🦁Pip换源.⛅ 🦁当使用Pip安装Python软件包时,默认情况下会…

BayesPrism(贝叶斯棱镜法)可提取单细胞数据去卷积后将信息映射至bulkRNA数据

贝叶斯棱镜法作为一种工具可以根据scRNA数据(作为先验模型)去推断bulkRNA数据中肿瘤微环境组成(不同免疫细胞组分/不同细胞群)和基因表达情况。 开发者展示的图片就很形象了,左边图展示了把标注了不同细胞类型的单细胞数据作为先验信息(prior info)的基因信息和bul…

力扣144题:二叉树的先序遍历

给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 示例 1: 输入:root [1,null,2,3] 输出:[1,2,3]示例 2: 输入:root [] 输出:[]示例 3: 输入:root [1] 输出&am…

【云岚到家】-day05-6-项目迁移-门户-CMS

【云岚到家】-day05-6-项目迁移-门户-CMS 4 项目迁移-门户4.1 迁移目标4.2 能力基础4.2.1 缓存方案设计与应用能力4.2.2 静态化技术应用能力 4.3 需求分析4.3.1 界面原型 4.4 系统设计4.4.1 表设计4.4.2 接口与方案4.4.2.1 首页信息查询接口4.4.3.1 数据缓存方案4.4.3.2 页面静…

【绝命Coding助力秋招】Python实现<实习僧>海投脚本

hello hello~ ,这里是绝命Coding——老白~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页:绝命Coding-CSDN博客 &a…

Java 实验三:数组操作以及Java中的方法

一、实验目的 1、掌握数组的声明、初始化、查找、排序等的方式; 2、掌握Java中如何定义一个方法,定义好的方法如何进行调用等。 二、实验环境 1、windows11; 2、JDK1.8,集成开发环境Eclipse。 三、实验内容 1、 定义一个函数,获取某个…

Linux系统搭建轻量级个人博客VanBlog并一键发布公网远程访问

文章目录 前言1. Linux本地部署2. VanBlog简单使用3. 安装内网穿透4. 创建公网地址5. 创建固定公网地址 前言 今天和大家分享如何在Linux Ubuntu系统搭建一款轻量级个人博客VanBlog,并结合cpolar内网穿透软件生成公网地址,轻松实现随时随地远程访问本地…

网络配置命令

文章目录 一、查看网络接口信息 ifconfig1.1 网络接口名称1.2 使用 ifconfig 查看网络接口信息1.2.1 输出示例1.2.2 输出解释 1.3 查看特定网络接口信息1.3.1 输出示例 1.4 查看所有网络接口信息1.5 特殊网络接口 二、修改网络配置文件2.1 配置文件示例2.2 使配置生效2.3 关闭 …

JavaScript日期对象倒计时案例

思路&#xff1a;1.先求出当前时间的总毫秒数 2.再求出所需要求的时间的总毫秒数 3.用所求时间的减去当前时间的可得到倒计时剩余时间 4.最后将所求的倒计时剩余时间转换为天&#xff0c;小时&#xff0c;分钟&#xff0c;秒即可 <!DOCTYPE html> <html lang"en…

1.31、基于长短记忆网络(LSTM)的发动机剩余寿命预测(matlab)

1、基于长短记忆网络(LSTM)的发动机剩余寿命预测的原理及流程 基于长短期记忆网络(LSTM)的发动机剩余寿命预测是一种常见的机器学习应用&#xff0c;用于分析和预测发动机或其他设备的剩余可用寿命。下面是LSTM用于发动机剩余寿命预测的原理和流程&#xff1a; 数据收集&#…

可观察性优势:掌握当代编程技术

反馈循环是我们开发人员工作的关键。它们为我们提供信息&#xff0c;并让我们从用户过去和现在的行为中学习。这意味着我们可以根据过去的反应进行主动开发。 TestComplete 是一款自动化UI测试工具&#xff0c;这款工具目前在全球范围内被广泛应用于进行桌面、移动和Web应用的…

C++ 类和对象 赋值运算符重载

前言&#xff1a; 在上文我们知道数据类型分为自定义类型和内置类型&#xff0c;当我想用内置类型比较大小是非常容易的但是在C中成员变量都是在类(自定义类型)里面的&#xff0c;那我想给类比较大小那该怎么办呢&#xff1f;这时候运算符重载就出现了 一 运算符重载概念&…

npm发布的包如何快速在cnpm上使用

npm发布的包如何快速在cnpm上使用 解决方案 前往淘宝npm镜像官网 搜索插件库并点击同步 等待一分钟即可查看最新版本

Nuxt.js 错误侦探:useError 组合函数

title: Nuxt.js 错误侦探&#xff1a;useError 组合函数 date: 2024/7/14 updated: 2024/7/14 author: cmdragon excerpt: 摘要&#xff1a;文章介绍Nuxt.js中的useError组合函数&#xff0c;用于统一处理客户端和服务器端的错误&#xff0c;提供statusCode、statusMessage和…

PostgreSQL修改最大连接数

在使用PostgreSQL 的时候&#xff0c;经常会遇到这样的错误提示&#xff0c; sorry, too many clients already&#xff0c;这是因为默认PostgreSQL最大连接数是 100, 一般情况下&#xff0c;个人使用时足够的&#xff0c;但是在生产环境&#xff0c;这个连接数是远远不够的&am…

内存函数(C语言)

内存函数 以下函数的头文件&#xff1a;string.h 针对内存块进行处理的函数 memcpy 函数原型&#xff1a; void* memcpy(void* destination, const void* source, size_t num);目标空间地址 源空间地址num&#xff0c;被拷贝的字节个数 返回目标空间的起始地…

火星全球彩色影像图介绍(中分辨率相机)

一、数据基本信息 该数据是利用天问一号轨道器中分辨率相机获取的影像经光度校正、几何校正、全球制图等制作而成的全火星地图数据DOM&#xff0c;每个数据包含一个tif数据文件。该影像图分辨率为76米。 任务型号&#xff1a;天问一号 搭载平台&#xff1a;环绕器 数据获…