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)模型

相关推荐
wjhx1 分钟前
QT中对蓝牙权限的申请,整理一下
java·数据库·qt
YCY^v^5 分钟前
JeecgBoot 项目运行指南
java·学习
冰暮流星12 分钟前
javascript之二重循环练习
开发语言·javascript·数据库
人间打气筒(Ada)16 分钟前
jenkins基于Pipeline发布项目
java·pipeline·jenkins·流水线·ci·cd·cicd
爬山算法21 分钟前
Hibernate(88)如何在负载测试中使用Hibernate?
java·后端·hibernate
自不量力的A同学26 分钟前
Solon AI v3.9 正式发布:全能 Skill 爆发
java·网络·人工智能
万岳科技系统开发37 分钟前
食堂采购系统源码库存扣减算法与并发控制实现详解
java·前端·数据库·算法
独断万古他化40 分钟前
【Spring 原理】Bean 的作用域与生命周期
java·后端·spring
*小海豚*1 小时前
在linux服务器上DNS正常,但是java应用调用第三方解析域名报错
java·linux·服务器
冉冰学姐1 小时前
SSM智慧社区管理系统jby69(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·管理系统·智慧社区·ssm 框架