redis详细讲解 redis协议详解

面试中问到Redis持久化的原理,本篇在做详细解答1、可在redis.conf中配置,会以一段时间内达到指定修改的次数为规则来触发快照操作,快照文件名为dump.rdb 。每当Redis服务重启的时候都会从该文件中把数据加载到内存中 。在60秒内有10000次操作即触发RDB持久化 。
2、RDB 持久化机制 :是对 redis 数据执行周期性的持久化 。这种方式就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为 dump.rdb 。客户端也可以使用save或者bgsave命令通知redis做一次快照持久化 。
3、AOF(append only file)持久化:以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中的命令达到恢复数据的目的 。AOF的主要作用是解决了数据持久化的实时性,目前已经是Redis持久化的主流方式 。
4、redis提供两种方式进行持久化,一种是RDB持久化(原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化),另外一种是AOF(append only file)持久化(原理是将Reids的操作日志以追加的方式写入文件) 。
5、在redis的配置里有着这样的一段配置:save 900 1save 300 10save 60 10000很关键的一段配置,这时RDB持久化的核心 。
6、redis 数据持久化 快照(snapshots)缺省情况情况下 , Redis把数据快照存放在磁盘上的二进制文件中 , 文件名为dump.rdb 。
redis是多线程的吗redis不是多线程 。redis是单线程的原因在于redis用单个CPU绑定一块内存的数据,然后针对这块内存的数据进行多次读写的时候,都是在一个CPU上完成的 。
Redis在处理客户端请求时采用单线程模型,但在某些特定功能(如持久化操作)上采用了多线程 。Redis在处理客户端的请求时 , 采用的是单线程模型 。
Redis采用的是单进程单线程模型的KV数据库,由C语言编写 。官方提供的数据是可以达到100000+的qps 。这个数据不比采用单进程多线程的同样基于内存的KV数据库Memcached差 。
众所周知 , Redis是一个key-value存储系统 , 它有一些特性 , 例如基于内存、单线程、非阻塞、操作原子性、高性能等 。
下面重点介绍单线程设计和IO多路复用核心设计快的原因 。为什么Redis是单线程的官方答案因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或者网络带宽 。
redis是如何执行的执行命令的过程其实主要是寻找命令对应的执行函数 , 通过lookupCommand查找对应的执行命令,通过call执行命令 。负责执行命令 c-cmd-proc 并更新统计信息 , 执行完成后负责同步数据 propagate。
首先为了方便管理 , 将Redis文件中的conf配置文件和常用命令移动到统一文件中 。
AOF 是以appendonly方式进行数据的储存的 , 开启AOF模式后,所有存进redis内存的数据都会进入os cache中,然后默认1秒执行一次fsync写入追加到appendonly.aof文件中 。
【redis详细讲解 redis协议详解】这里一直在强调的单线程,只是在处理网络请求的时候只有一个线程来处理,一个正式的Redis Server运行的时候肯定是不止一个线程的,这里需要大家明确的注意一下 。例如Redis进行持久化的时候会以子进程或者子线程的方式执行 。

    推荐阅读