Releases: XD-DENG/rediseen
Endpoint /metrics to Provide Prometheus-compatible Redis INFO Command Output
- A new feature to allow Rediseen to be used as an Exporter for Prometheus (a new endpoint
/metrics
providing Prometheus-compatible Redis INFO command output). - A few doc improvements
- A few test improvements
Proper module/import, so allow installing via `go get` now; More intensive testing
- Adopting proper usage of modules and importing, so now users can install Rediseen easily via
go get
as a new convenient installation option. - Add go version 1.12 to 1.15 in the matrix of all tests, so the testing becomes more robust
- Fix an issue due to a minor change in Go 1.15 ("New warning for string(x)", https://golang.org/doc/go1.15)
- Other a few trivial changes
Use Cobra for CLI, and change how PID file is handled under daemon mode
Use Cobra
for CLI Interface (#24)
Rather than using Go-native way to create the CLI interface, migrate to Cobra.
The only change from user perspective is: if user wants to run the service in background, earlier they run rediseen -d start
, now they need to run rediseen start -d
or rediseen start --daemon-mode
Create PID file as $HOME/.rediseen/rediseen.pid
if run in daemon mode (#25)
When run in daemon mode, instead of creating PID file rediseen.pid under "$HOME/", create it under "$HOME/.rediseen/".
Bug Fix, Performance Improvement, and Code Refactoring
Bug Fix
- when we list keys together with their types (when we use endpoints like
/0
), we should return at most 1000 keys while this was missed in the earlier implementation
Performance Improvement
- When we list keys (when we use endpoints like
/0
), we list keys first, then get type for each of them. This may cause a lot of round-trips and the performance becomes very bad. Starting from this release, we use Redis's pipeline feature to reduce the Round-Trip-Time, and the performance improves significantly (rather than a performance improvement, maybe I should call this a bugfix instead, because not using pipeline feature in such scenario is a stupid mistake or a serious bug).
Others
- Versions of underlying stuff are upgraded, including Go, go-redis, Docker base image, etc.
- Other non-feature code refactoring
More Helpful Index Endpoint + Better-formatted Logging + Other Improvements
- More helpful index endpoint
- Better-formatted logging
- Improve
ExtendedClient.RedisInfo()
performance - Set
json.encoder.SetEscapeHTML
to false to avoid "<" and ">" to be converted to\u0026
and\u003c
in JSON result - Refactor to make code cleaner (due to there are two main features now, /db/key and /info/section)
- Refine documentation
- Address golint warnings
ALL results of Redis INFO command are exposed via endpoint /info (rather than part of them)
- Clients will be able to get the same information as they run
INFO
command in Redis CLI. - Implementation of
/info
endpoint is simplified significantly.
New endpoint /info to support exposing results of `INFO` command
A new endpoint /info
(or /info/<section>
) is added to support exposing results of INFO
command.
This allows users to check Redis DB status easily. More importantly, it allows Rediseen
to become a connector between Redis DB and any monitoring system/dashboard.
Others:
- Fix typos
- Refactor for better code base structure
Adjust configuration validation order
It was changed by accident in the last dev cycle
Significant Refactoring (no change in API) + Easier Docker Run + More Comprehensive Integration Test
- Signification code refactoring, but change in usage/API
- Integration tests cover all major Redis versions now
- Update Dockerfile to allow run command easilier with
docker run
- Refine documentation
New feature: to support API Key Authentication + Enhancements
API Key Authentication
API Key authentication is supported now.
If environment variable REDISEEN_API_KEY
is set and is not "", authentication is enforced. Then client has to add X-API-KEY
in HTTP header in order to access API, otherwise a 401 error will be given.
By default, there is no authentication enforced, but a WARNING will be printed in the log.
More strict check on the request path
For example, request like /0/key:0/0/0
will get a error reminder return.
Integration test is added
Integration test is added, and it's against multiple Redis versions.