随着命令不断写入AOF,文件会越来越大,为了解决这个问题,redis引入了AOF重写机制压缩文件。文件能缩小的原因是:
1.旧文件中的无效命令不会保留,如del key1,sort。
2.多条合并成一条,如lplush list a,lplush list b转换为lplush a b,也可以合并重复项。
AOF重写可以手动触发和自动触发:
1.手动触发可以调用bgrewriteaof。
2.根据如下两个参数自动触发。
redis.conf
#代表当前AOF文件空间和上次重写后AOF空间的比值。
auto-aof-rewrite-percentage 100
#AOP超过10m就开始收缩
auto-aof-rewrite-min-size 10mb
下面来做一个实验,观察appendonly.aof文件,超过10m之后就开始收缩,不断循环。
import redis.clients.jedis.Jedis;
public class TestRedisAOF {
public static void main(String args[]){
Jedis jedis = new Jedis(“127.0.0.1”, 6379);
int i=0;
while(i<100000000) {
jedis.set(“jedis”,“abcdefghijkabcdefghijkabcdefghijkabcdefghijkabcdefghijk”);
i++;
}
}
}