
🚀 欢迎来到我的优快云博客:Optimistic _ chen
✨ 一名热爱技术与分享的全栈开发者,在这里记录成长,专注分享编程技术与实战经验,助力你的技术成长之路,与你共同进步!
🚀我的专栏推荐:
| 专栏 | 内容特色 | 适合人群 |
|---|---|---|
| 🔥C语言从入门到精通 | 系统讲解基础语法、指针、内存管理、项目实战 | 零基础新手、考研党、复习 |
| 🔥Java基础语法 | 系统解释了基础语法、类与对象、继承 | Java初学者 |
| 🔥Java核心技术 | 面向对象、集合框架、多线程、网络编程、新特性解析 | 有一定语法基础的开发者 |
| 🔥Java EE 进阶实战 | Servlet、JSP、SpringBoot、MyBatis、项目案例拆解 | 想快速入门Java Web开发的同学 |
| 🔥Java数据结构与算法 | 图解数据结构、LeetCode刷题解析、大厂面试算法题 | 面试备战、算法爱好者、计算机专业学生 |
🚀我的承诺:
✅ 文章配套代码:每篇技术文章都提供完整的可运行代码示例
✅ 持续更新:专栏内容定期更新,紧跟技术趋势
✅ 答疑交流:欢迎在文章评论区留言讨论,我会及时回复(支持互粉)
🚀 关注我,解锁更多技术干货!
⏳ 每天进步一点点,未来惊艳所有人!✍️ 持续更新中,记得⭐收藏关注⭐不迷路 ✨
📌 标签:#技术博客 #编程学习 #Java #C语言 #算法 #程序员
文章目录
前言
前面博客讲到Redis的全局命令,意味着它们使用在大多数场景中;当然Redis 是一个高性能的键值数据库,支持多种数据结构。这篇博客使用常用数据结构String进行简单介绍。
String类型是Redis最基础的数据类型,它的特点:
- Redis中所有的键(key)的类型都是String类型,其他几种数据结构都是在字符串类型基础上构建的
- Redis内部存储字符串完全是按照⼆进制流的形式保存的,所以不存在编码转换(可以存储文本、数字或二进制数据,最大 512MB)。
常见命令
这里简单解释一下后面提到的特殊符合的意义:
- [ ]:表示可选参数,可以根据需要选择使用
- | :表示只能从多个选项中选择一个
- expiration :过期机制,Redis 为键设置生存时间(TTL),到期后自动删除。
- EX seconds:使用秒作为单位设置key的过期时间
- PX seconds:使用毫秒作为单位设置key的过期时间
- NX:只在key不存在时才进⾏设置
- XX:只在key存在时才进⾏设置
- nil:表示为空
SET和GET
SET的作用:将string 类型的value设置到key中。
#语法
SET key value [expiration EX seconds|PX milliseconds] [NX|XX]
返回值:
设置成功,返回OK.
如果SET指定了NX或者XX但条件不满⾜,SET不会执⾏,并返回 nil

GET的作用:获取对应的value
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位有符号整型,则报错)
incr key

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

两者返回值都是 integer 类型的加完后的数值。
INCRBY和DECRBY
INCRBY的作用:将key对应的string表示的数字加上对应的值
incrby key decrement

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

两者返回值都是 integer 类型的加完后的值。
INCRBYFLOAT
作用:将key对应的string表⽰的浮点数加上对应的值。如果对应的值是负数,则视为减去对应的值。
INCRBYFLOAT key increment

返回值:+ / - 完后的数值
注意:
上述计数操作的时间复杂度都是O(1),并且因为redis单机架构模型,多个客户端针对同一个key操作时,不会出现“线程安全问题“。
其他命令
APPEND
作用:如果key已经存在并且是⼀个string,命令会将value追加到原有string的后边。
append key value

时间复杂度:追加的字符串⼀般⻓度较短,可以视为O(1)
返回值:追加完成之后string的⻓度。
GETRANGE
作用:返回key对应的string的⼦串,由start和end确定(左闭右闭); 可以使⽤负数表⽰倒数。-1代表倒数第⼀个字符
getrange key start end

返回值:string 类型的字串
SETRANGE
作用:覆盖字符串的一部分,从指定的偏移开始
setrange key offset value

返回值:替换后的string的⻓度
STRLEN
作用:获取key对应的string的长度(单位是字节)
strlen key

返回值:string的⻓度。或者当key不存在时,返回0。
内部编码
上篇博客讲到,字符串的内部编码有三种:raw,int,embstr。redis会根据当前值的类型和长度动态决定使用哪种内部编码实现。
下面详细介绍这三种内部编码:
#查看当前内部编码
object encoding key
raw
大于39个字节的字符串

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

int
8个字节的长整型

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

但是这样有一个问题,随着数据量的增大,redis的压力会越来越大,大部分数据压力都会由redis承担,后面会不会崩溃?
答案是会崩溃。所以redis在写键值对的时候给key提供了一个过期时间,时间到了这个数据自动被删除;同时还有淘汰策略等等解决方案。
还有计数功能,很多网站都使用redis作为计数工具,它可以实现快速计数、查询缓存的功能,同时数据可以异步处理或者落地到其他数据源。
完结撒花!🎉

如果这篇博客对你有帮助,不妨点个赞支持一下吧!👍
你的鼓励是我创作的最大动力~
✨ 想获取更多干货? 欢迎关注我的专栏 → optimistic_chen
📌 收藏本文,下次需要时不迷路!
我们下期再见!💫 持续更新中……
悄悄说:点击主页有更多精彩内容哦~ 😊

1393

被折叠的 条评论
为什么被折叠?



