Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
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