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集群(哨兵模式)

=======================================未完待续

原文地址:https://www.cnblogs.com/zwt1990/p/8718188.html