redis介绍
简介:其实本来不想写关于redis的,因为本身对redis的了解停留在应用上,但是为了应对面试的一些知识还是需要去了解一下它的底层原理
redis介绍:
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
它通常被称为数据结构服务器,因为值(value)可以是字符串(String), 哈希(Map), 列表(list), 集合(sets) 和有序集合(sorted sets)等类型。
关键字:基于内存 可持久化 key-value nosql
解释:
基于内存:客户端对redis所有的操作都是在内存中进行的,所以它的速度会很快(相较于关系型数据库的IO开销)
可持久化:基于内存的好处就是速度快,但是有个弊端就是重启之后数据全部丢失,这显然不是我们愿意看到的,redis提供了两种持久化的方式
RDB持久化:将reids在内存中的数据库记录定时dump到磁盘上的RDB持久化
过程:Redis调用fork(),产生一个子进程。
子进程把数据写到一个临时的RDB文件。
当子进程写完新的RDB文件后,把旧的RDB文件替换掉
优点:便于备份(不同时间都有dump文件),性能很好,需要进行持久化时,主进程会fork一个子进程出来,然后把持久化的工作交给子进程,自己不会有相关的I/O操作
缺点:会丢数据(备份完成前宕机,上一次之前的到当前的数据没有记录下来)
2AOF(append only file)持久化:每当Redis接受到会修改数据集的命令时,就会把命令追加到AOF文件里,当你重启Redis时,AOF里的命令会被重新执行一次,重建数据
优点:比RDB可靠,默认每一秒同步一次日志,最多丢失1秒的数据,而且采用append方式写入,这样就算在写入过程中发生异常,原来的日志文件也不会受影响
缺点:在相同的数据集下,AOF文件的大小一般会比RDB文件大
key-value:
value支持字符串(String), 哈希(Map), 列表(list), 集合(sets) 和有序集合(sorted sets)等类型
redis特点
redis集群(哨兵模式)
=======================================未完待续