Redis的持久化-AOF
简介AOF比RDB有更好的持久性。在使用AOF的时候,redis会将每一个收到的写命令都通过write()系统函数追加到aof文件中,类似于MySQL的binlog。当redis重启后,会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容。
RDB最大的不足之处在于:一旦数据库出现问题,由于RDB文件中保存的数据并不是全新的。从上次RDB文件生成到redis宕机,这段时间的数据全部丢掉了(因为刷写机制还没有触发)。
AOF比RDB有更好的持久性。在使用AOF的时候,redis会将每一个收到的写命令都通过write()系统函数追加到aof文件中,类似于MySQL的binlog。当redis重启后,会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容。
AOF的完全持久化方式同时也带来了另一个问题,持久化文件会变得越来越大。(比如我们调用INCR test命令100次,文件中就必须保存全部的100条命令,但其实99条都是多余的。因为要恢复数据库的状态其实文件中保存一条SET test 100就够了)。为了压缩AOF的持久化文件,Redis提供了bgrewriteaof命令。收到此命令后Redis将使用与快照类似的方式将内存中的数据以命令的方式保存到临时文件中,最后替换原来的文件,以此来实现控制AOF文件的增长。
AOF配置
修改配置文件/apps/redis/6379.conf,找到AOF部分:APPEND ONLY MODE
1、是否开启AOF
# 是否开启AOF,默认关闭(no)
appendonly yes
2、指定AOF文件名字
appendfilename "appendonly.aof"
3、配置刷新模式
# Redis支持三种不同的刷写模式:
# appendfsync always #每次收到写命令就立即强制写入磁盘,是最有保证的完全的持久化,但速度也是最慢的,一般不推荐使用。
appendfsync everysec #每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,是受推荐的方式。
# appendfsync no #完全依赖OS的写入,一般为30秒左右一次,性能最好但是持久化最没有保证,不被推荐。
4、重写配置
#在日志重写时,不进行命令追加操作,而只是将其放在缓冲区里,避免与命令的追加造成DISK IO上的冲突。
#设置为yes表示rewrite期间对新写操作不fsync,暂时存在内存中,等rewrite完成后再写入,默认为no
no-appendfsync-on-rewrite no
5、配置自动启动新的日志
#当前AOF文件大小是上次日志重写得到AOF文件大小的二倍时,自动启动新的日志重写过程
auto-aof-rewrite-percentage 100
6、配置重写日志的最小值
#当前AOF文件启动新的日志重写过程的最小值,避免刚刚启动Redis时由于文件尺寸较小导致频繁的重写
auto-aof-rewrite-min-size 64mb
nc是一个简单、可靠、强大的网络工具,可以建立TCP连接,发送UDP数据包,监听任意的TCP和UDP端口,进行端口扫描,处理IPv4和IPv6数据包。如果过系统中没有nc命令,需要进行安装:yum -y install nc
最近想把公司的内网几台服务器能通过打开一个网站的方式进行管理,所以寻求了一圈最终选择了Teleport。Teleport,这是一个使用Go语言编写的,高效的现代SSH管理工具。
在前面我们已经介绍了Redis的持久化RDB和AOF。但是很多时候,我们需要考虑很多因素:服务器宕机数据丢失、持久化时的性能开销、持久化文件的大小以及数据恢复速度。RDB持久化,两次快照之间写入的数据可能会丢失,当写入流量较大且数据集也很大时,RDB中系统调用fork()的延迟和内存的开销也是一个问题。但是RDB比AOF文件占用的磁盘空间更小,并且从RDB中恢复数据的速度更快。事实上,我们可以同时启动这两个功能。
Centos中用Chrome将网页导出为PDF,chrome --headless --print-to-pdf https://developer.chrome.com/
最近国内访问GitHub特别的慢,那么对于一名程序猿来说,GitHub是多么的重要,本文主要记录如何加快GitHub的访问。
快速生成表格
Electron页面跳转、浏览器打开链接和打开新窗口
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。
Docker编译镜像出现:fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.2c4ac24e.tar.gz: No such file or directory问题