首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【Redis 系列】常用数据结构---String类型

【Redis 系列】常用数据结构---String类型

作者头像
optimistic_chen
发布2026-01-15 12:44:07
发布2026-01-15 12:44:07
940
举报

🚀 欢迎来到我的CSDN博客:Optimistic _ chen一名热爱技术与分享的全栈开发者,在这里记录成长,专注分享编程技术与实战经验,助力你的技术成长之路,与你共同进步!


🚀我的专栏推荐

专栏

内容特色

适合人群

🔥C语言从入门到精通

系统讲解基础语法、指针、内存管理、项目实战

零基础新手、考研党、复习

🔥Java基础语法

系统解释了基础语法、类与对象、继承

Java初学者

🔥Java核心技术

面向对象、集合框架、多线程、网络编程、新特性解析

有一定语法基础的开发者

🔥Java EE 进阶实战

Servlet、JSP、SpringBoot、MyBatis、项目案例拆解

想快速入门Java Web开发的同学

🔥Java数据结构与算法

图解数据结构、LeetCode刷题解析、大厂面试算法题

面试备战、算法爱好者、计算机专业学生


🚀我的承诺: ✅ 文章配套代码:每篇技术文章都提供完整的可运行代码示例

✅ 持续更新:专栏内容定期更新,紧跟技术趋势

✅ 答疑交流:欢迎在文章评论区留言讨论,我会及时回复(支持互粉)


🚀 关注我,解锁更多技术干货! ⏳ 每天进步一点点,未来惊艳所有人!✍️ 持续更新中,记得⭐收藏关注⭐不迷路 ✨

📌 标签:#技术博客 #编程学习 #Java #C语言 #算法 #程序员

前言

前面博客讲到Redis的全局命令,意味着它们使用在大多数场景中;当然Redis 是一个高性能的键值数据库,支持多种数据结构。这篇博客使用常用数据结构String进行简单介绍。 String类型是Redis最基础的数据类型,它的特点:

  1. Redis中所有的键(key)的类型都是String类型,其他几种数据结构都是在字符串类型基础上构建的
  2. Redis内部存储字符串完全是按照⼆进制流的形式保存的,所以不存在编码转换(可以存储文本、数字或二进制数据,最大 512MB)。

常见命令

这里简单解释一下后面提到的特殊符合的意义:

  • [ ]:表示可选参数,可以根据需要选择使用
  • | :表示只能从多个选项中选择一个
  • expiration :过期机制,Redis 为键设置生存时间(TTL),到期后自动删除。
  • EX seconds:使用秒作为单位设置key的过期时间
  • PX seconds:使用毫秒作为单位设置key的过期时间
  • NX:只在key不存在时才进⾏设置
  • XX:只在key存在时才进⾏设置
  • nil:表示为空

SET和GET

SET的作用:将string 类型的value设置到key中。

代码语言:javascript
复制
#语法
SET key value [expiration EX seconds|PX milliseconds] [NX|XX]

返回值: 设置成功,返回OK. 如果SET指定了NX或者XX但条件不满⾜,SET不会执⾏,并返回 nil

在这里插入图片描述
在这里插入图片描述

GET的作用:获取对应的value

代码语言:javascript
复制
get key

返回值:key对应的value,或者nil当key不存在 时间复杂度都是O(1).

MSET和MGET

MGET的作用:一次性获取多个key的值

MGET的返回值:对应的value列表;如果对应的key不存在或者对应的数据类型不是string,返回nil。

在这里插入图片描述
在这里插入图片描述

MSET作用:一次性设置多个key的值

返回值:OK 时间复杂度:一次性操作多组键值对,时间复杂度就是O(N),N取决于操作键值对的数量

注意:对于Redis来说,批量命令和单一命令的执行时间大差不差,但是,使⽤mget/mset由于可以有效地减少了⽹络传输时间,提高性能。

SET 系列工作流程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

计数命令

INCR和DECR

INCR的作用:将key对应的string表⽰的数字加一(如果key不存在,则认为key对应的value是0;如果key的范围超过了64位有符号整型,则报错)

代码语言:javascript
复制
incr key 
在这里插入图片描述
在这里插入图片描述

DECR的作用:将key对应的string 表示的数字减一(如果key不存在,则认为key对应的value是0;如果key的范围超过了64位有符号整型,则报错)

代码语言:javascript
复制
decr key
在这里插入图片描述
在这里插入图片描述

两者返回值都是 integer 类型的加完后的数值。

INCRBY和DECRBY

INCRBY的作用:将key对应的string表示的数字加上对应的值

代码语言:javascript
复制
incrby key decrement
在这里插入图片描述
在这里插入图片描述

DECRBY的作用:将key对应的string表⽰的数字减去对应的值

代码语言:javascript
复制
DECRBY key decrement
在这里插入图片描述
在这里插入图片描述

两者返回值都是 integer 类型的加完后的值。

INCRBYFLOAT

作用:将key对应的string表⽰的浮点数加上对应的值。如果对应的值是负数,则视为减去对应的值。

代码语言:javascript
复制
INCRBYFLOAT key increment
在这里插入图片描述
在这里插入图片描述

返回值:+ / - 完后的数值 注意: 上述计数操作的时间复杂度都是O(1),并且因为redis单机架构模型,多个客户端针对同一个key操作时,不会出现“线程安全问题“。

其他命令

APPEND

作用:如果key已经存在并且是⼀个string,命令会将value追加到原有string的后边。

代码语言:javascript
复制
append key value
在这里插入图片描述
在这里插入图片描述

时间复杂度:追加的字符串⼀般⻓度较短,可以视为O(1) 返回值:追加完成之后string的⻓度。

GETRANGE

作用:返回key对应的string的⼦串,由start和end确定(左闭右闭); 可以使⽤负数表⽰倒数。-1代表倒数第⼀个字符

代码语言:javascript
复制
getrange key start end
在这里插入图片描述
在这里插入图片描述

返回值:string 类型的字串

SETRANGE

作用:覆盖字符串的一部分,从指定的偏移开始

代码语言:javascript
复制
setrange key offset value
在这里插入图片描述
在这里插入图片描述

返回值:替换后的string的⻓度

STRLEN

作用:获取key对应的string的长度(单位是字节)

代码语言:javascript
复制
strlen key
在这里插入图片描述
在这里插入图片描述

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

内部编码

上篇博客讲到,字符串的内部编码有三种:raw,int,embstr。redis会根据当前值的类型和长度动态决定使用哪种内部编码实现。 下面详细介绍这三种内部编码:

代码语言:javascript
复制
#查看当前内部编码
object encoding key

raw

大于39个字节的字符串

在这里插入图片描述
在这里插入图片描述

embstr

小于等于39个字节的字符串

在这里插入图片描述
在这里插入图片描述

int

8个字节的长整型

在这里插入图片描述
在这里插入图片描述

应用场景

cache(缓存)功能

大部分场景下,Redis作为缓冲层,MySQL作为存储层,绝大部分数据都是从redis中获取,因为redis具有支撑高并发的特性,降低MySQL的压力。

在这里插入图片描述
在这里插入图片描述

但是这样有一个问题,随着数据量的增大,redis的压力会越来越大,大部分数据压力都会由redis承担,后面会不会崩溃?

答案是会崩溃。所以redis在写键值对的时候给key提供了一个过期时间,时间到了这个数据自动被删除;同时还有淘汰策略等等解决方案。

还有计数功能,很多网站都使用redis作为计数工具,它可以实现快速计数、查询缓存的功能,同时数据可以异步处理或者落地到其他数据源

完结撒花!🎉

如果这篇博客对你有帮助,不妨点个赞支持一下吧!👍 你的鼓励是我创作的最大动力~

想获取更多干货? 欢迎关注我的专栏 → optimistic_chen 📌 收藏本文,下次需要时不迷路!

我们下期再见!💫 持续更新中……


悄悄说:点击主页有更多精彩内容哦~ 😊

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2026-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 常见命令
    • SET和GET
    • MSET和MGET
    • SET 系列工作流程
  • 计数命令
    • INCR和DECR
    • INCRBY和DECRBY
    • INCRBYFLOAT
  • 其他命令
    • APPEND
    • GETRANGE
    • SETRANGE
    • STRLEN
  • 内部编码
    • raw
    • embstr
    • int
  • 应用场景
    • cache(缓存)功能
  • 完结撒花!🎉
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档