news 2026/6/13 3:33:40

3.Redis通用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
3.Redis通用

1.get、set

get:根据key值获取value;键值对不存在,返回nil;

set:设置key value

redis命令不区分大小写

2.Redis全局命令

2.1 keys

Redis支持很多种数据结构;key固定是string类型,value有多种数据结构;(字符串、哈希、列表、集合、有序集合)-> 不同数据结构有不同的命令

全局命令就是能够搭配任意数据结构来使用的。

1)keys,用来匹配服务器中所有满足条件的key

pattern 包含特殊符号的字符串,格式筛选;

? 匹配一个字符

* 匹配0个或多个字符

[abcd] 匹配a、b、c、d

[^e] 除了e不匹配,其他都匹配

[a-b] 匹配a-b这个范围内的,包括边界

keys命令的时间复杂度是O(N),生产环境上一般会禁用keys命令,尤其是keys *。

原因:生产环境上的key非常多,Redis是一个单线程的服务器,执行keys *的时间非常长,就会导致其他请求被阻塞,进而去访问mysql服务器,可能导致mysql挂了

2.2 exists

exists 判断key是否存在,返回key存在的个数

EXISTS key [key ...] 可以用于多个key

时间复杂度:O(1)

为什么要用于判断多个key?exists key1 key2 和 exists key1 + exists key2区别?

Redis是一个客户端/服务器的模式,命令的执行需要通过网络,一次执行相比两次执行可以降低网络传输的时间,节省硬件资源。

因此,Redis很多命令都是可以一次就能操作多个key的。

2.3 del

del 删除指定的key,返回删除key的个数

DEL key [key ...] 可用于多个key

时间复杂度:O(1)

注意:虽然Redis作为缓存来使用时删除几个数据没有问题,但是删的多了,MySQL的压力就会很大。

2.4 expire

expire 给key设置过期时间,单位为秒(秒间隔太长了,pexpire设置毫秒级的过期时间)

EXPIRE key seconds

key过期了,会被自动删除。场景:验证码、优惠券

基于redis实现分布式锁,为了避免不能解锁,会给key设置过期时间。

2.5 ttl(time to live)

ttl 查看过期时间还剩多少,单位秒(pttl,单位毫秒)

2.6 Redis过期策略是怎么实现的?(面试题)

1)定期删除 -> 每次抽取一部分数据,进行检验过期时间;

2)惰性删除 -> key已经到了过期时间,暂时不删,等到下一次访问这个key时,触发删除操作。

定期删除的数据不宜过多,因为redis是单线程程序,需要考虑正常请求的处理;

以上两种删除策略,整体效果一般,还有一系列的内存淘汰机制(待补充)。

定时删除探讨

1)redis没有采取定时器删除的方式来删除key

2)如果有多个key过期,定时删除比较高效。

没有采取定时删除,猜测:redis初衷是单线程程序,定时删除要引入多线程

2.7 定时器删除实现思路

定时器:在某个时间达到后,执行相应的任务。

1.基于优先级队列/堆

核心:过期时间早,优先级高;利用优先级去淘汰节点

只需要分配一个线程,定时地去检查堆顶元素是否过期就行了 -> 为了节省CPU开销,检查不宜过于频繁 ->根据堆顶元素的过期时间设置间隔时间,让线程休眠这个时间。

如果在新任务来到的时候,新任务可能比堆顶时间还早过期,唤醒线程,重新设置休眠时间。

2.基于时间轮

核心思路:轮询遍历,检查过期时间。

注意:当时间超过循环能放下的最大时间,循环着放。

2.8 type

type 返回key所对应的数据类型(value的数据类型)

时间复杂度:O(1)

2.9 总结:

keys:查询指定key

exists:判断是否存在

del:删除指定的key

expire:设置过期时间

ttl:获取还有多久过期

type:获取key对应value的类型

注意:keys风险,del风险,redis key过期策略实现、定时器思路。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 19:56:54

揭秘Budibase应用性能提升的5个关键策略

揭秘Budibase应用性能提升的5个关键策略 【免费下载链接】budibase Low code platform for creating internal tools, workflows, and admin panels in minutes. Supports PostgreSQL, MySQL, MSSQL, MongoDB, Rest API, Docker, K8s, and more 🚀. Budibase, the l…

作者头像 李华
网站建设 2026/6/13 9:57:32

计算机毕设Java基于Android的高校勤工俭学管理系统 基于Android的高校勤工助学管理平台设计与实现 高校勤工俭学管理系统:基于Java与Android技术的开发

计算机毕设Java基于Android的高校勤工俭学管理系统a70r49 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。 随着互联网技术的飞速发展,高校勤工俭学管理逐渐从传统的人…

作者头像 李华
网站建设 2026/6/13 6:17:57

5分钟学会用Markdown创建精美网页:md-page完全指南

5分钟学会用Markdown创建精美网页:md-page完全指南 【免费下载链接】md-page 📝 create a webpage with just markdown 项目地址: https://gitcode.com/gh_mirrors/md/md-page 想要创建网页却对复杂的HTML和CSS感到头疼?现在&#xff…

作者头像 李华
网站建设 2026/6/10 23:08:41

故障录波分析软件终极指南:CAAP2008X完全使用手册

故障录波分析软件终极指南:CAAP2008X完全使用手册 【免费下载链接】故障录波分析软件caap2008X 本仓库提供了一个功能强大的故障录波分析软件——caap2008X。该软件专为读取和分析COMTRADE格式的故障录波数据而设计,具有操作简便、功能全面的特点。无需安…

作者头像 李华
网站建设 2026/6/13 0:35:58

如何构建稳定可靠的Discord机器人:Serenity网关系统深度剖析

如何构建稳定可靠的Discord机器人:Serenity网关系统深度剖析 【免费下载链接】serenity A Rust library for the Discord API. 项目地址: https://gitcode.com/gh_mirrors/ser/serenity 在Discord机器人开发中,WebSocket连接和分片管理是决定系统…

作者头像 李华
网站建设 2026/6/12 4:46:16

Realtek 8811CU无线网卡驱动下载:Windows 7完整安装指南

Realtek 8811CU无线网卡驱动下载:Windows 7完整安装指南 【免费下载链接】Realtek8811CU-21CU无线网卡驱动下载 Realtek 8811CU/8821CU无线网卡驱动专为Windows 7系统设计,支持802.11ac USB NIC,确保在AD-HOC模式下稳定运行。该驱动经过严格测…

作者头像 李华