redis原理

redis为什么是单线程的

内存操作,程序的瓶颈不在cpu而在I/O和网络开销

redis单线程的多路复用I/O

I/O是一种操作系统级别的指令 ,所以需要从用户内存空间调用内核内存空间指令,然后内核从外部加载数据到内核中,再返回数据到用户,这就导致用户在调用的时候会有阻塞,需要等待内核的数据准备加载完毕才能继续执行。所以redis用一个线程监听多个I/O,也就是多个I/O复用一个线程。实现方式有很多种,见下:

redis多路复用实现

操作系统内存组成

image.png

在上述过程中,从用户态调用内核的操作,数据的加载和准备会阻塞用户区的线程。

过期策略

  1. 定时过期
  2. 惰性过期
  3. 定期过期

持久化机制

RDB (redis DataBase) :
默认方式
持久化是通过生成dump.rdb文件(快照文件)
在高并发下对redis的性能影响较低
可以接收一小段时间内的数据丢失 可以使用次方式

AOP( Append Only File) :
在高并发下对redis的性能影响较高
持久化是通过生成append.aof文件(保存的是指令)
每一次请求都会保存其指令
有rewrile机制,用以保证最小能还原数据的指令集(对同一key的修改指令只会保存最后一次)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发布订阅模式 列表的局限 通过队列的rpush 和lpop 可以实现消息队列(队尾进队头出),但是消费者需要不停地...
    WEIJAVA阅读 653评论 0 1
  • 发布订阅模式 列表的局限性 通过队列的 rpush 和 lpop 可以实现消息队列(队尾进队头出),但是消费者需要...
    vincent浩哥阅读 309评论 0 0
  • 过期时间设置 在Redis中提供了Expire命令设置一个键的过期时间,到期以后Redis会自动删除它。EXPIR...
    不给起这个名字阅读 426评论 0 0
  • Redis服务器是一个事件驱动程序,服务器需要处理以下两类事件:■ 文件事件( le event):Redis服务...
    tracy_668阅读 278评论 0 1
  • 搞懂这些Redis知识点,吊打面试官! Redis主从复制原理总结 一文掌握Redis主从复制、哨兵、Cluste...
    临风2020阅读 4,321评论 0 5

友情链接更多精彩内容