【Redis】string数据类型

news2024/10/7 16:15:47

文章目录

  • 常用命令
    • set
      • setnx & NX
      • XX
      • setex & EX
      • psetex & PX
    • mset
    • get & mget
    • incr & decr
    • incrby & decrby
    • incrbyfloat
    • append
    • getrange
    • setrange
    • strlen
  • 内部编码

字符串类型是 Redis 最基础的数据类型。

在redis中所有的键都是 string 类型,其他的数据类型也都是在 string 的基础上构建的

string 类型可以是实际上的字符串,也可以是 JSON XML 格式的字符串

常用命令

set

SET key value [NX | XX] [GET] [EX seconds | PX milliseconds | EXAT unix-time-seconds | PXAT unix-time-milliseconds | KEEPTTL]

将 string 类型的 value 设置到 key 中,时间复杂度为 O(1),设置成功返回 OK,失败返回 nil

img

可以看到 set 有很多的参数,正因为这些参数又可以分出几种不同的设置键值的命令

setnx & NX

如果在 set 命令的时候加上 NX 就代表着:只在 key 不存在时才进⾏设置,也就是说当 key 存在就不执行

想实现这个效果也可以使用 setnx 命令,这个命令就是代表着 set 加上了 NX,但是使用这个命令就不能结合 set 中的其他参数使用了。

img

XX

如果在 set 时加上 XX 就代表着:只有 key 存在的时候才能设置,将新的 Value 覆盖原先的,即 key 不存在则不执行。

这个参数并没有对应的命令

img

setex & EX

如果在 set 时加上 EX seconds 就代表着: 使用 seconds 秒设置 key 的过期时间

想实现这个效果也可以使用 setex 命令,这个命令就是代表着 set 加上了 EX。注意 setex 命令的 key 后面跟着的是 seconds 而不是 value,并且 setex 是可以覆盖已存在的 key 的值的。

SETEX key seconds value

img

psetex & PX

如果在 set 时加上 PX millseconds 就代表着: 使用 millseconds 毫秒设置 key 的过期时间

psetex 用法和 setex 一样。

img

mset

set 是单次设置一个 key,而 mset 是单次设置多个 key。

MSET key value [key value ...]

单次设置多个 key 也就意味着可以少点向 redis 发送网络请求,大大提升性能。

需要注意的是:如果单次设置太多个 key 可能会导致 redis 因为这条指令执行的时间太长而阻塞住,所以要根据实际情况衡量。

img

get & mget

get 用来获取单个 key 的 value ,需要注意如果这个 key 的 value 不是 string 类型则会报错

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

img

incr & decr

INCR key
DECR key

incr:将 key 对应的 string 表⽰的数字加⼀。

decr:将 key 对应的 string 表⽰的数字减⼀。

二者都是如果 key 对应的 string 表示的不是⼀个整型或者范围超过了 64 位有符号整型则报错。

img

incrby & decrby

INCRBY key decrement
DECR key decrement

incrby:将 key 对应的 string 表⽰的数字加上 decrement 对应的值。

decrby:将 key 对应的 string 表⽰的数字减去 decrement 对应的值。

二者都是如果 key 对应的 string 表示的不是⼀个整型或者范围超过了 64 位有符号整型则报错。

img

incrbyfloat

INCRBYFLOAT key increment

incrbyfloat:将 key 对应的 string 表⽰的数字加上 increment 对应的浮点数值,increment 既可以是正数也可以是负数。

img

append

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

img

getrange

 GETRANGE key start end

返回 key 对应的 value 的⼦串,由 start 和 end 确定(左闭右闭)。负数表示右往左数的位置,-1表示倒数第一个,0表示正数第一个。如果超过了长度则会根据长度自动调整。

img

setrange

SETRANGE key offset value

从指定的 offset 偏移量开始覆盖字符串

img

strlen

获取 key 对应的 value 的长度,如果 value 不为 string 则报错。

内部编码

字符串类型的内部编码有 3 种:

  • 当 value 表示整型并且表示的整型不超过8个字节时,内部编码就为 int 对应 C++ 中的(long long)
  • 当 value 表示不为 int 并且字符串的长度没有超过边界值(默认值为39)个字节时,为 embstr 类型
  • 除去以上两种都为 raw

redis 会根据当前的类型和长度去决定使用哪一种内部编码实现

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

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

相关文章

[大模型]Qwen-Audio-chat FastApi 部署调用

Qwen-Audio-chat FastApi 部署调用 Qwen-Audio 介绍 Qwen-Audio 是阿里云研发的大规模音频语言模型(Large Audio Language Model)。Qwen-Audio 可以以多种音频 (包括说话人语音、自然音、音乐、歌声)和文本作为输入,并以文本作为…

改进前后端交互实例

前后端交互实例(javaweb05)-CSDN博客 在这之前我假设大家都已经学完了IOC和DI 不明白的这里我也解释一下,首先是两个概念 1.控制反转:对象的创建控制权由程序自身转到外部(容器) 2.依赖注入:容器为程序提供运行时所依赖的资源 Bean对象:IOC容器中创建,关联的对象,称之为be…

蓝桥杯第十五界软件测试线下省赛题目分析及解决

PS 需要第十五界蓝桥杯被测系统或者功能测试模板、单元测试被测代码、自动化测试被测代码请加🐧:1940787338 备注:15界蓝桥杯省赛软件测试 题目1:功能测试 题目描述 ​ 某物流公司的货运收费标准根据重量、距离和节假日三个因素来确定。如…

MATLAB 体素滤波(62)

MATLAB 体素滤波(62) 一、算法介绍二、算法实现1.代码(已验证,直接运行)一、算法介绍 这里的代码完成文件读入,体素滤波,效果显示,结果输出的操作,下面是效果截图,后面是代码。 体素滤波(Voxel Filtering)是一种用于三维点云数据处理的方法,其原理类似于二维图像…

linux提权——提权大赏

文章目录 一、可读shadow文件利用提权二、可写shadow文件利用提权三、可写passwd文件利用提权四、sudo环境变量提权配置环境实验 五、自动任务文件权限提升配置环境实验 六、自动任务PATH环境变量提权七、自动任务通配符提权 一、可读shadow文件利用提权 ls -al /etc/shadow #…

JUC面试——⭐⭐Java中的四种引用类型/Threadlocal

四种引用类型 Java 中对象的引用分为四种级别,这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用。 基础知识 强引用:普通使用的引用 强引用是造成 Java 内存泄漏的主要原因之一 软引用: GC内存不够时回收 适用于&…

RK3588 linux 修改ulimit 配置

前言 ulimit 主要是用来限制进程对资源的使用情况的,它支持各种类型的限制,常用的有: 内核文件的大小限制进程数据块的大小限制Shell进程创建文件大小限制可加锁内存大小限制常驻内存集的大小限制打开文件句柄数限制分配堆栈的最大大小限制C…

椋鸟数据结构笔记#10:排序·中

文章目录 四、归并排序时间复杂度实现递归实现非递归实现 测试稳定性 五、非比较排序5.1 计数排序时间复杂度实现测试局限性 5.2 桶排序时间复杂度实现测试 5.3 基数排序时间复杂度实现测试局限性 萌新的学习笔记,写错了恳请斧正。 四、归并排序 归并排序是一种非常…

pta L1-063 吃鱼还是吃肉

L1-063 吃鱼还是吃肉 分数 10 全屏浏览 切换布局 作者 陈越 单位 浙江大学 国家给出了 8 岁男宝宝的标准身高为 130 厘米、标准体重为 27 公斤;8 岁女宝宝的标准身高为 129 厘米、标准体重为 25 公斤。 现在你要根据小宝宝的身高体重,给出补充营养的…

java实现识别图片上的文字(OCR识别身份证等证件信息)

利用第三方jar包,实现识别图片上的文字。第三方支持地址:Spire.OCR for Java | 专业的图文识别组件,用以读取图片格式中的文本Spire.OCR for Java 是专为 Java 开发者设计的强大OCR库,提供高效的文字识别功能,能够从图…

Proxy 代理

意图 为其它对象提供一种代理以控制这个对象的访问。 结构 Proxy保存一个引用使得代理可以访问实体;提供一个与Subject的接口相同的接口,使代理可以用来替代实体;控制实体的存取,并可能负责创建和删除它;其他功能依赖…

企业文档知识库建设,数据安全如何保障?

随着现代市场经济的高速发展,企业的竞争优势越来越多体现在人才和科技的优势。而随着员工流动率的提升,随之流失的则是员工积累多年的宝贵工作经验,如果缺乏有效的内部知识库的建设和管理,企业的竞争优势将难以维系。「企业网盘」…

网络管理实验三、SNMP协议工作原理验证与分析

1 实验概括 实验目的: 学习捕获SNMP报文,通过报文分析理解SNMP协议的工作过程。 实验内容: 1) 使用snmputilg发送SNMP数据包; 使用wireshark抓包;使用netstat –an查看代理站TCP/UDP连接表; 2)…

单机调度问题(第i工件的完工时间=加工时间+等待时间)

第08章 制造系统的调度控制 - 百度文库 (baidu.com) 模拟退火单机极小化总流水时间的排序问题_哔哩哔哩_bilibili 在单机调度问题中,工件的完工时间是一个至关重要的指标,因为它直接反映了生产效率的高低。而完工时间的计算,必须同时考虑工件…

cocos creator 3.6 发布web手机端 加载进度条添加

cocos creator 升级到3.x之后加载进度条取消了,测试了多个3.x版本最终以creator 3.6.3版本,构建了简单的进度加载 参考链接: https://forum.cocos.org/t/topic/137113 打包web-mobile后,没有进度条。加载的时候只显示一个黑屏。…

贪吃蛇设计详解

在去年12月中,初次接触c语言,我靠着为数不多的知识,使用数组仿照写了一份贪吃蛇,现在时隔5个月,我已经有能力独立写出真正的贪吃蛇而不是简单的仿照(虽然写的是挺简单的)。 那么我们现在就正式…

在ComfyUI中使用Deforum简单步骤, 以及报错处理

⛳背景 deforum这个插件其实去年就在webui流行的时候火过一阵子,效果的话,因为并没有引入太多“时间”的概念,所以画面基本上每一帧都不一样,但也恰恰因为这个,所以可以产生很多宛若吃了毒蘑菇的视频,后来…

Rokid AR Lite空间计算套装发布,软硬件全面升级推动居家、出行、户外场景大规模应用

4月20日,以“好玩、好看、好上头”为主题的Rokid Open Day 2024发布会在杭州举行,Rokid对外正式发布新一代AR Lite空间计算套装,分享了近期Rokid在AR开发者生态和数字文化领域的进展和成果,并宣布了多项跨行业重磅合作。作为中国代…

OerOerlikonTCO1200欧瑞康LPCVD system操作使用说明

OerOerlikonTCO1200欧瑞康LPCVD system操作使用说明

javaWeb项目-智能仓储系统功能介绍

项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架:ssm、Springboot 前端:Vue、ElementUI 关键技术:springboot、SSM、vue、MYSQL、MAVEN 数据库工具:Navicat、SQLyog 1、JSP技术 JSP(Jav…