summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/redis.h1
-rw-r--r--src/slowlog.c5
-rw-r--r--src/slowlog.h1
3 files changed, 6 insertions, 1 deletions
diff --git a/src/redis.h b/src/redis.h
index 523cb3117..2346b4eb0 100644
--- a/src/redis.h
+++ b/src/redis.h
@@ -528,6 +528,7 @@ struct redisServer {
size_t stat_peak_memory; /* max used memory record */
long long stat_fork_time; /* time needed to perform latets fork() */
list *slowlog;
+ long long slowlog_entry_id;
long long slowlog_log_slower_than;
unsigned long slowlog_max_len;
/* Configuration */
diff --git a/src/slowlog.c b/src/slowlog.c
index 17edf6159..cfd66dc63 100644
--- a/src/slowlog.c
+++ b/src/slowlog.c
@@ -26,6 +26,7 @@ slowlogEntry *slowlogCreateEntry(robj **argv, int argc, long long duration) {
}
se->time = time(NULL);
se->duration = duration;
+ se->id = server.slowlog_entry_id++;
return se;
}
@@ -47,6 +48,7 @@ void slowlogFreeEntry(void *septr) {
* at server startup. */
void slowlogInit(void) {
server.slowlog = listCreate();
+ server.slowlog_entry_id = 0;
listSetFreeMethod(server.slowlog,slowlogFreeEntry);
}
@@ -96,7 +98,8 @@ void slowlogCommand(redisClient *c) {
int j;
se = ln->value;
- addReplyMultiBulkLen(c,3);
+ addReplyMultiBulkLen(c,4);
+ addReplyLongLong(c,se->id);
addReplyLongLong(c,se->time);
addReplyLongLong(c,se->duration);
addReplyMultiBulkLen(c,se->argc);
diff --git a/src/slowlog.h b/src/slowlog.h
index 45a500555..bad770db4 100644
--- a/src/slowlog.h
+++ b/src/slowlog.h
@@ -2,6 +2,7 @@
typedef struct slowlogEntry {
robj **argv;
int argc;
+ long long id; /* Unique entry identifier. */
long long duration; /* Time spent by the query, in nanoseconds. */
time_t time; /* Unix time at which the query was executed. */
} slowlogEntry;