qishibo/AnotherRedisDesktopManager · error
e.message
Error message
e.message
What it means
Toast showing e.message when TS.INFO (or the subsequent TS.REVRANGE scan) fails during initShow() in KeyContentTimeSeries.vue:178. TS.* commands are served by the RedisTimeSeries module; on a server without it, ioredis rejects with "ERR unknown command 'TS.INFO'" — the most common text seen here. Other rejections: deleted key ("ERR TSDB: the key does not exist"), connection loss, or cluster nodes lacking the module.
Source
Thrown at src/components/contents/KeyContentTimeSeries.vue:178
// scroll to bottom while loading more
if (oldValue.length && (newValue.length > oldValue.length)) {
setTimeout(() => {
this.$refs.contentTable && this.$refs.contentTable.scrollTo(0, 99999999);
}, 0);
}
},
},
methods: {
initShow(resetTable = true) {
resetTable && this.resetTable();
this.loadingIcon = 'el-icon-loading';
this.initInfo().then(() => {
this.listScan();
}).catch((e) => {
this.loadingIcon = '';
this.loadMoreDisable = true;
this.$message.error(e.message);
});
},
initInfo() {
return this.client.call('TS.INFO', this.redisKey).then((reply) => {
const info = {};
if (reply && reply.length) {
for (let i = 0; i < reply.length; i += 2) {
info[reply[i]] = this.flatArrayInfo(reply[i + 1]);
}
}
this.infoDict = info;
this.total = Number(info.totalSamples) || 0;
});
},
flatArrayInfo(lines) {
if (!Array.isArray(lines)) {
return String(lines);
}View on GitHub (pinned to c149855106)
Solutions
- Run MODULE LIST in the console; if timeseries is absent, use a RedisStack image or LOAD the module (MODULE LOAD timeseries.so) and restart
- Verify you connected to the intended node — in clusters every master must carry the module
- If the message says the key does not exist, refresh the sidebar — the key is gone
- On connection errors, reconnect and reopen the key
Example fix
// before
this.initInfo().then(() => { this.listScan(); }).catch((e) => {
this.$message.error(e.message);
});
// after: distinguish missing module from missing key
.catch((e) => {
if (/unknown command/i.test(e.message)) {
this.$message.error('RedisTimeSeries module not loaded on this server');
} else { this.$message.error(e.message); }
}); Defensive patterns
Strategy: try-catch
Validate before calling
// probe module availability once per connection before rendering TS views
const mods = await this.client.call('MODULE', 'LIST');
const hasTS = mods.some(m => String(m[1]).toLowerCase().includes('timeseries'));
if (!hasTS) { this.$message.error('RedisTimeSeries module not loaded'); return; } Try / catch
.catch((e) => {
if (/unknown command/i.test(e.message)) this.$message.error('RedisTimeeries module not loaded on this server');
else if (/does not exist/i.test(e.message)) this.refreshKeyList();
else this.$message.error(e.message);
}) Prevention
- Use RedisStack (or load the timeseries module) on servers you will browse TS.* keys from
- Run MODULE LIST after connecting to a new environment
- In clusters, ensure every master carries the module
When it happens
Trigger: initInfo() calling TS.INFO fails when: the RedisTimeSeries module is not loaded (OSS Redis without modules, wrong docker image); connecting to a cluster where some masters lack the module; the browsed key was deleted or expired between sidebar click and content load; the connection dropped.
Common situations: Opening a TimeSeries key on plain redis:latest instead of redis/redis-stack; module list differing across cluster nodes after a partial upgrade; clicking a key that a retention job just removed.
Related errors
- this.$t('message.delete_failed')
- Sentinel & Cluster cannot be checked together!
- message || this.$t('message.test_connection_failed')
- this.$t('message.test_connection_timeout')
- this.$t('message.key_type_not_support')
AI-assisted analysis of qishibo/AnotherRedisDesktopManager@c149855106 (2026-08-22).
Data as JSON: /api/errors/cf878ccd64456f16.
Report an issue: GitHub.