计算机基础--Redis

参考文献

  1. https://zhuanlan.zhihu.com/p/599663544

基础知识

1. Redis的数据类型及使用场景

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
在这里插入图片描述

2. Redis为什么快

  • Redis 是基于内存的,绝大部分请求都是纯粹的内存操作。
  • 数据结构以及底层编码方式,Redis 的数据结构是专门进行设计的,数据结构简单,对数据操作也简单。
  • 采用单线程 + IO 多路复用的模型。
    • 单线程避免了不必要的上下文切换和锁竞争
    • IO 多路复用模型,非阻塞 IO。
  • 底层模型不同,它们之间底层实现方式以及客户端之间的通信的应用协议不一样,redis 直接自己构建了 VM 机制。因为一般的系统调用,会浪费一定的时间去移动和请求(基本不用,享受纯内存操作)
  • 计算向数据移动,与 memcache 对比。(在 IO 上优化)
    • 移动数据成本大,移动计算成本小

3. Redis 是单线程还是多线程

无论什么版本,工作线程就是一个,但是在6.x 高版本出现了 IO 多线程

单线程,满足 redis 的串行原子,只不过 IO 多线程后,把 输入/输出 放到更多的线程里去并行。这样做的好处在于:

  • 执行时间缩短,更快
  • 更好地压榨系统及硬件地资源(网卡能够高效的使用)

简单来说,为什么使用多线程?
答:充分利用多核,提高网络吞吐

4. 那么Redis 6.0 之前为什么不使用多线程?

  • Redis 的性能瓶颈不在于 CPU,主要在于内存和网络
    • 如果吞吐量不能满足我们的需求,更推荐的做法是使用分片的方式将不同的请求交给不同的 Redis 服务器来处理,而不是在同一个 Redis 服务中引入大量的多线程操作
  • 单线程编程实现简单并且容易维护,方便开发和调试。并且使用单线程 + 文件事件处理器 也能并发的处理客户端的请求。
  • 多线程会存在死锁、上下文切换等问题,甚至会影响性能

5. 多线程有缺点,为什么又引入了多线程

虽然 Redis 中引入了多线程,但是 Redis 的多线程只是把网络 IO 这类耗时的操作放到多线程中执行,充分利用多核,提高网络吞吐,更好地压榨系统及硬件地资源(网卡能够高效的使用)。执行命令仍然是单线程顺序执行,不需要担心线程安全问题。

6. Redis多线程实现机制在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值