为什么redis可以做分布式锁,单线程的redis为什么快,4PX面试题

11 篇文章 0 订阅

4PX面试题!!!


第一问,有没有用过分布式锁?

有,基于redis的分布锁


第二问,redis为什么可以做分布式锁?

Redis为单进程单线程模式,采用队列模式将并发访问变成串行访问,且多客户端对Redis的连接并不存在竞争关系。

代码实现的,主要是针对某一笔数据的流水号加锁,防止多个线程写入这个数据。(具有互斥性)


第三问,redis据你所知是单线程的,为什么redis还可以快?
  1. 开发语言
    现在我们都用高级语言来编程,比如 Java、python 等。也许你会觉得 C 语言很古老,但是它真的很有用,毕竟 unix 系统就是用 C 实现的,所以 C 语言是非常贴近操作系统的语言。Redis 就是用 C 语言开发的,所以执行会比较快。

  2. 纯内存访问
    Redis 将所有数据放在内存中,非数据同步正常工作时,是不需要从磁盘读取数据的

  3. 单线程
    第一,单线程简化算法的实现,并发的数据结构实现不但困难而且测试也麻烦。
    第二,单线程避免了线程切换以及加锁释放锁带来的消耗,对于服务端开发来说,锁和线程切换通常是性能杀手。

  4. 非阻塞多路 I/O 复用机制
    I/O 多路复用实际上是指多个连接的管理可以在同一进程。多路是指网络连接,复用只是同一个线程。在网络服务中,I/O 多路复用起的作用是一次性把多个连接的事件通知业务代码处理,处理的方式由业务代码来决定,该方法就会返回可读 / 写的 FD 个数。
    Redis 使用 epoll 作为 I/O 多路复用技术的实现,再加上 Redis 自身的事件处理模型将 epoll 的 read、write、close 等都转换成事件,不在网络 I/O 上浪费过多的时间,从而实现对多个 FD 读写的监控,提高性能。

这里推荐另一篇相关文章:https://blog.csdn.net/hcmony/article/details/80694560

  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值