标签:time 小结 images enable mit line height was pre
typedef struct slowlogEntry { // 命令参数 robj **argv; // 命令参数数量 int argc; // 唯一标识符 long long id; /* Unique entry identifier. */ // 执行命令消耗的时间,以纳秒( 1 / 1,000,000,000 秒)为单位 long long duration; /* Time spent by the query, in nanoseconds. */ // 命令执行时的时间 time_t time; /* Unix time at which the query was executed. */ } slowlogEntry;
struct redisServer { // ... other fields // 保存慢查询日志的链表 list *slowlog; /* SLOWLOG list of commands */ // 慢查询日志的当前 id 值 long long slowlog_entry_id; /* SLOWLOG current entry ID */ // 慢查询时间限制 long long slowlog_log_slower_than; /* SLOWLOG time limit (to get logged) */ // 慢查询日志的最大条目数量 unsigned long slowlog_max_len; /* SLOWLOG max number of items logged */ // ... other fields };
伪代码 def execute_redis_command_with_slowlog(): # 命令执行前的时间 start = ustime() # 执行命令 execute_command(argv, argc) # 计算命令执行所耗费的时间 duration = ustime() - start if slowlog_is_enabled: slowlogPushEntryIfNeed(argv, argc, duration) def slowlogPushEntryIfNeed(argv, argc, duration) # 如果执行命令耗费的时间超过服务器设置命令执行时间上限 # 那么创建一条新的 slowlog if duration > server.slowlog_log_slower_than: # 创建新 slowlog log = new slowlogEntry() # 设置各个域 log.argv = argv log.argc = argc log.duration = duration log.id = server.slowlog_entry_id log.time = now() # 将新 slowlog 追加到日志链表末尾 server.slowlog.append(log) # 更新服务器 slowlog server.slowlog_entry_id += 1
标签:time 小结 images enable mit line height was pre
原文地址:http://www.cnblogs.com/Aiapple/p/7255625.html