Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
967ae8ca
Commit
967ae8ca
authored
Apr 24, 2013
by
antirez
Browse files
Config option to turn AOF rewrite incremental fsync on/off.
parent
c735116c
Changes
5
Hide whitespace changes
Inline
Side-by-side
redis.conf
View file @
967ae8ca
...
@@ -580,6 +580,12 @@ client-output-buffer-limit pubsub 32mb 8mb 60
...
@@ -580,6 +580,12 @@ client-output-buffer-limit pubsub 32mb 8mb 60
# 100 only in environments where very low latency is required.
# 100 only in environments where very low latency is required.
hz
10
hz
10
# When a child rewrites the AOF file, if the following option is enabled
# the file will be fsync-ed every 32 MB of data generated. This is useful
# in order to commit the file to the disk more incrementally and avoid
# big latency spikes.
aof
-
rewrite
-
incremental
-
fsync
yes
################################## INCLUDES ###################################
################################## INCLUDES ###################################
# Include one or more other config files here. This is useful if you
# Include one or more other config files here. This is useful if you
...
...
src/aof.c
View file @
967ae8ca
...
@@ -855,7 +855,8 @@ int rewriteAppendOnlyFile(char *filename) {
...
@@ -855,7 +855,8 @@ int rewriteAppendOnlyFile(char *filename) {
}
}
rioInitWithFile
(
&
aof
,
fp
);
rioInitWithFile
(
&
aof
,
fp
);
rioSetAutoSync
(
&
aof
,
REDIS_AOF_AUTOSYNC_BYTES
);
if
(
server
.
aof_rewrite_incremental_fsync
)
rioSetAutoSync
(
&
aof
,
REDIS_AOF_AUTOSYNC_BYTES
);
for
(
j
=
0
;
j
<
server
.
dbnum
;
j
++
)
{
for
(
j
=
0
;
j
<
server
.
dbnum
;
j
++
)
{
char
selectcmd
[]
=
"*2
\r\n
$6
\r\n
SELECT
\r\n
"
;
char
selectcmd
[]
=
"*2
\r\n
$6
\r\n
SELECT
\r\n
"
;
redisDb
*
db
=
server
.
db
+
j
;
redisDb
*
db
=
server
.
db
+
j
;
...
...
src/config.c
View file @
967ae8ca
...
@@ -317,6 +317,12 @@ void loadServerConfigFromString(char *config) {
...
@@ -317,6 +317,12 @@ void loadServerConfigFromString(char *config) {
argc
==
2
)
argc
==
2
)
{
{
server
.
aof_rewrite_min_size
=
memtoll
(
argv
[
1
],
NULL
);
server
.
aof_rewrite_min_size
=
memtoll
(
argv
[
1
],
NULL
);
}
else
if
(
!
strcasecmp
(
argv
[
0
],
"aof-rewrite-incremental-fsync"
)
&&
argc
==
2
)
{
if
((
server
.
aof_rewrite_incremental_fsync
=
yesnotoi
(
argv
[
1
]))
==
-
1
)
{
err
=
"argument must be 'yes' or 'no'"
;
goto
loaderr
;
}
}
else
if
(
!
strcasecmp
(
argv
[
0
],
"requirepass"
)
&&
argc
==
2
)
{
}
else
if
(
!
strcasecmp
(
argv
[
0
],
"requirepass"
)
&&
argc
==
2
)
{
if
(
strlen
(
argv
[
1
])
>
REDIS_AUTHPASS_MAX_LEN
)
{
if
(
strlen
(
argv
[
1
])
>
REDIS_AUTHPASS_MAX_LEN
)
{
err
=
"Password is longer than REDIS_AUTHPASS_MAX_LEN"
;
err
=
"Password is longer than REDIS_AUTHPASS_MAX_LEN"
;
...
@@ -566,6 +572,11 @@ void configSetCommand(redisClient *c) {
...
@@ -566,6 +572,11 @@ void configSetCommand(redisClient *c) {
}
else
if
(
!
strcasecmp
(
c
->
argv
[
2
]
->
ptr
,
"auto-aof-rewrite-min-size"
))
{
}
else
if
(
!
strcasecmp
(
c
->
argv
[
2
]
->
ptr
,
"auto-aof-rewrite-min-size"
))
{
if
(
getLongLongFromObject
(
o
,
&
ll
)
==
REDIS_ERR
||
ll
<
0
)
goto
badfmt
;
if
(
getLongLongFromObject
(
o
,
&
ll
)
==
REDIS_ERR
||
ll
<
0
)
goto
badfmt
;
server
.
aof_rewrite_min_size
=
ll
;
server
.
aof_rewrite_min_size
=
ll
;
}
else
if
(
!
strcasecmp
(
c
->
argv
[
2
]
->
ptr
,
"aof-rewrite-incremental-fsync"
))
{
int
yn
=
yesnotoi
(
o
->
ptr
);
if
(
yn
==
-
1
)
goto
badfmt
;
server
.
aof_rewrite_incremental_fsync
=
yn
;
}
else
if
(
!
strcasecmp
(
c
->
argv
[
2
]
->
ptr
,
"save"
))
{
}
else
if
(
!
strcasecmp
(
c
->
argv
[
2
]
->
ptr
,
"save"
))
{
int
vlen
,
j
;
int
vlen
,
j
;
sds
*
v
=
sdssplitlen
(
o
->
ptr
,
sdslen
(
o
->
ptr
),
" "
,
1
,
&
vlen
);
sds
*
v
=
sdssplitlen
(
o
->
ptr
,
sdslen
(
o
->
ptr
),
" "
,
1
,
&
vlen
);
...
@@ -847,6 +858,8 @@ void configGetCommand(redisClient *c) {
...
@@ -847,6 +858,8 @@ void configGetCommand(redisClient *c) {
config_get_bool_field
(
"activerehashing"
,
server
.
activerehashing
);
config_get_bool_field
(
"activerehashing"
,
server
.
activerehashing
);
config_get_bool_field
(
"repl-disable-tcp-nodelay"
,
config_get_bool_field
(
"repl-disable-tcp-nodelay"
,
server
.
repl_disable_tcp_nodelay
);
server
.
repl_disable_tcp_nodelay
);
config_get_bool_field
(
"aof-rewrite-incremental-fsync"
,
server
.
aof_rewrite_incremental_fsync
);
/* Everything we can't handle with macros follows. */
/* Everything we can't handle with macros follows. */
...
...
src/redis.c
View file @
967ae8ca
...
@@ -1189,6 +1189,7 @@ void initServerConfig() {
...
@@ -1189,6 +1189,7 @@ void initServerConfig() {
server.aof_fd = -1;
server.aof_fd = -1;
server.aof_selected_db = -1; /* Make sure the first time will not match */
server.aof_selected_db = -1; /* Make sure the first time will not match */
server.aof_flush_postponed_start = 0;
server.aof_flush_postponed_start = 0;
server.aof_rewrite_incremental_fsync = 1;
server.pidfile = zstrdup("/var/run/redis.pid");
server.pidfile = zstrdup("/var/run/redis.pid");
server.rdb_filename = zstrdup("dump.rdb");
server.rdb_filename = zstrdup("dump.rdb");
server.aof_filename = zstrdup("appendonly.aof");
server.aof_filename = zstrdup("appendonly.aof");
...
...
src/redis.h
View file @
967ae8ca
...
@@ -585,6 +585,7 @@ struct redisServer {
...
@@ -585,6 +585,7 @@ struct redisServer {
time_t
aof_rewrite_time_start
;
/* Current AOF rewrite start time. */
time_t
aof_rewrite_time_start
;
/* Current AOF rewrite start time. */
int
aof_lastbgrewrite_status
;
/* REDIS_OK or REDIS_ERR */
int
aof_lastbgrewrite_status
;
/* REDIS_OK or REDIS_ERR */
unsigned
long
aof_delayed_fsync
;
/* delayed AOF fsync() counter */
unsigned
long
aof_delayed_fsync
;
/* delayed AOF fsync() counter */
int
aof_rewrite_incremental_fsync
;
/* fsync incrementally while rewriting? */
/* RDB persistence */
/* RDB persistence */
long
long
dirty
;
/* Changes to DB from the last save */
long
long
dirty
;
/* Changes to DB from the last save */
long
long
dirty_before_bgsave
;
/* Used to restore dirty on failed BGSAVE */
long
long
dirty_before_bgsave
;
/* Used to restore dirty on failed BGSAVE */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment