+static int redis_db_stats(char *node, char const *info_line) /* {{{ */
+{
+ unsigned char db;
+ unsigned char max_db = 16;
+ static char field_name[10];
+ static char db_id[3];
+ char *str;
+ static char buf[MAX_REDIS_VAL_SIZE];
+ value_t val;
+ int i;
+
+ for (db = 0; db < max_db; db++) {
+ sprintf(field_name, "db%d:keys", db);
+
+ str = strstr(info_line, field_name);
+ if (str) {
+ str += strlen(field_name) + 1; /* also skip the '=' */
+ for (i = 0; (*str && (isdigit((unsigned char)*str) || *str == '.')); i++, str++)
+ buf[i] = *str;
+ buf[i] = '\0';
+
+ if (parse_value(buf, &val, DS_TYPE_GAUGE) == -1) {
+ WARNING("redis plugin: Unable to parse field `%s'.", field_name);
+ return (-1);
+ }
+
+ sprintf(db_id, "%d", db);
+ redis_submit (node, "records", db_id, val);
+ }
+ }
+ return (0);
+
+} /* }}} int redis_db_stats */
+
+