v1.8.66: fix 7 Redis bugs — shlex parser, GUI stats, SSL, error handling, dedup

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
chrome-storm-c442
2026-02-28 07:11:28 -05:00
parent 7c9e54bb44
commit 997c7d20a5
9 changed files with 841 additions and 56 deletions

View File

@@ -19,7 +19,7 @@ FIELD_MAP = {
"mariadb": ["user", "password", "database"],
"mssql": ["user", "password", "database"],
"postgresql": ["user", "password", "database"],
"redis": ["password", "db_index"],
"redis": ["password", "db_index", "use_ssl"],
"grafana": ["api_token", "use_ssl"],
"prometheus": ["use_ssl"],
"rdp": ["user", "password", "rdp_resolution", "rdp_quality", "rdp_clipboard", "rdp_drives", "rdp_printers"],

View File

@@ -188,18 +188,14 @@ class RedisTab(ctk.CTkFrame):
client = self._get_client()
db = int(self._db_var.get())
client.select_db(db)
keys_count = client.execute("DBSIZE")
info = client.execute("INFO memory")
# Parse memory from INFO output
memory = ""
if isinstance(info, str):
for line in info.split("\r\n"):
if line.startswith("used_memory_human:"):
memory = line.split(":")[1].strip()
break
# Прямые методы возвращают int и dict, не форматированные строки
keys_count = client.dbsize()
info = client.info("memory")
memory = info.get("used_memory_human", "") if info else ""
keys_text = f"{keys_count:,}" if keys_count is not None else ""
keys_text = str(keys_count) if keys_count is not None else ""
self.after(0, lambda: self._keys_label.configure(
text=t("redis_keys") + f": {keys_text}"))
self.after(0, lambda: self._memory_label.configure(