Redis——value的数据类型与单线程工作模型

前面提到过value不仅可以是string,也可以是hash,set等数据结构

我们用c++类比

字符串->string

哈希->unordered_map (field------value)

列表->deque

集合->set

有序集合:加了权重进行排序的集合

然而Redis在实际编码中,并没有完全的把上面的数据结构直接拿过来用,其为了提升效率节省curd时间,真正的结构并不一定和上述结构相同,但其保证对外的功能是不变的。内部编码会针对不同的应用场景进行相应的优化和改进。

我们也可以输入命令查看内部编码方式

object encoding key

Redis内部实际上是单线程工作模型(主要其处理的任务逻辑都是简单和快速的,不是很吃CPU)但并不是真正的内部只有一个线程在工作,在多个Redis客户端连接时,会有多个线程处理网络中的IO,只有到了Redis服务器端才会单线程执行,因此不会造成线程安全问题,一旦到了服务器就是串行。

同时,单线程也有弊端,作为客户端我们一定不能长时间占用资源。

问:既然Redis是单线程,为什么还是快呢?(相对于其他数据库来说)

1.Redis访问的是内存而不是磁盘

2.Redis处理的任务简单,功能不复杂

3.单线程模型,避免了线程竞争的开销(加锁解锁)

4.网络IO采用了多路转接(epoll)模型

相关推荐
蝎子莱莱爱打怪3 小时前
OpenClaw 从零配置指南:接入飞书 + 常用命令 + 原理图解
java·后端·ai编程
NineData4 小时前
NineData智能数据管理平台新功能发布|2026年1-2月
数据库·sql·数据分析
IvorySQL4 小时前
双星闪耀温哥华:IvorySQL 社区两项议题入选 PGConf.dev 2026
数据库·postgresql·开源
狼爷5 小时前
Go 没有 override?别硬套继承!用接口+嵌入,写更清爽的“覆盖”逻辑
java·go
小兔崽子去哪了7 小时前
Java 自动化部署
java·后端
ma_king7 小时前
入门 java 和 数据库
java·数据库·后端
后端AI实验室7 小时前
我用Cursor开发了3个月,整理出这套提效4倍的工作流
java·ai
jiayou6411 小时前
KingbaseES 实战:审计追踪配置与运维实践
数据库
码路飞12 小时前
GPT-5.3 Instant 终于学会好好说话了,顺手对比了下同天发布的 Gemini 3.1 Flash-Lite
java·javascript
SimonKing12 小时前
OpenCode AI编程助手如何添加Skills,优化项目!
java·后端·程序员