Nosql(非关系型数据库)
Nosql泛指非关系型数据库not only sql。
主要目的:解决大数据问题
常见的有:redis,MongoDB,memcache...
redis
redis中的主从模式
一般情况下,我们不可能只配置一个redis服务器,这样容易发生问题。我们会进行配置主从模式。
主从模式:
作用:数据备份;负载均衡,master节点进行读写操作,slave节点只能进行读操作。
主从同步:
修改配置文件:
主机(master)
#本机
bind 127.0.0.1
#端口
port 6379
#备份文件名称
dbfilename dump.rdb
从机(slave)
#本机
bind 127.0.0.1
#端口
port 6380
#备份文件名称
dbfilename dump.rdb
#谁的从机
slaveof 127.0.0.1 6379
哨兵模式:在主从模式中,如果master突然挂掉,slave又不能主动找到一个master,这时候哨兵(sentinel)得知master挂掉了,就会从slave中推选出来一个转换成master。
由于redis将数据保存在内从中,如果没有持久化,再开启redis的时候就没有上一次的数据了。这时候就要有持久化的操作来将数据保存到磁盘上,方便下次重启后在磁盘中获取数据。上次提及到了Redis中的持久化,其中有两种方式进行持久化操作,分别是rdb,aof。
rdb快照:
使用快照的方式进行持久化。在一定的时间点内使用快照的方式将数据集合写入磁盘中,实际上是redis server 先fork子进程,通过子进程将数据写入临时文件中,成功后代替之前的文件。
优点:可以保存某个时间点内的数据,适用于数据备份或灾难数据的恢复。最大优化redis的性能,父进程fork一个子进程进行数据的写入,父进程减少了io流操作
缺点:因为设置保存点,数据可以能要几分钟保存一次,可能存在某个时间上的数据丢失。在持久化数据的时候要fork子进程,每一次都要,这样对资源的消耗非常大。
特点:服务器在变更的时候,子服务器不用改变,就可以读到数据。
使用:其中redis的配置文件中已经存在快照的设置
意思是900秒内超过一次修改就进行快照操作,300秒内超过10次进行快照,60秒内超过10000次就进行快照
其中也可以手动在客户端进行操作
save或bgsave
数据的恢复:将备份文件(后缀为.rdb的文件)移动到安装目录下即可。
aof日志追加(append only file)
通过redisClient发出写的命令,Eredisserverc同步写的操作,以日志的形式记入服务器的操作,包括添加和删除,不包括查询。以文本的形式进行记入,可以查询内容。
特点:append模式,即使宕机也不会破坏日志中的内容。更高的持久化方式,因为有三种同步策略:每秒同步,每修改同步和不同步。
aof在redis中是默认关闭的要手动修改配置文件,在配置文件中存在
#默认是关闭的,要手动开启,改为yes
appendonly no
同时需要编辑.conf文件,来修改其日志追加的频率,其中有三种:
appendfsync always #每收到一次命令就会进行持久化,性能最慢,但是持久化更全面
appendfsync everysec #每秒进行一次持久化操作,在性能与持久化方面为最好的折中
appendfsync no #完全依赖系统,性能好的时候就持久化,性能不好的就不持久化
这三种都在配置文件中,可以找到,与appendonly 进行修改即可实现日志追加。
日志追加的文件会在安装目录下找到appendonly.aof
rdb与aof结合形成秒级同步
- appendonly yes,默认关闭,一开始就要配置好
- 每秒钟写入磁盘一次