Skip to content
Pavlo Lozovskiy edited this page Sep 10, 2019 · 9 revisions

What Python versions are supported?

  • Python 2.6, 2.7, 3.4, and 3.5 are officially supported. We have tests in place to ensure ongoing support.
  • Mark Costello added support for Python 2.5 in his redis-rdb-tools clone. If you need python 2.5 support, please add a comment to Issue#25.

What dump file versions are supported?

All Versions. We have unit tests for versions 2 through 6. If you happen to have a version 1 dump file, please upload it to a new issue, and I will gladly add unit tests for it as well.

Why doesn't expiry datetime match what's in the dump file?

The dump file stores the unix time in milliseconds precision. This does not have the timezone information. The parser converts this unix time into UTC. Your local clock may or may not be running UTC, and hence the difference.

If you know the timezone used while saving records in redis, you can always convert the UTC time back to the correct timezone.

Why doesn't reported memory match actual memory used?

The memory reported by this tool is approximate. In general, the reported memory should be within 10% of what is reported by info

Also note that the tool does not (and cannot) account for the following -

  1. Memory used by client buffers
  2. Memory used for pub/sub
  3. Redis process overheads

What else can I do with this parser?

  1. Export redis into a relational database like MySQL
  2. Export redis into a full text search engine like solr or amazon cloud search, so that you can do (almost) real time, full text search.
  3. Merge or split dump files. This is useful if you using several instances of Redis and shard your data
  4. Build a UI/Explorer for the data in Redis
  5. Build a tool that recommends changes that would reduce memory usage. The tool can recommend appropriate values for settings in redis.conf. It can also detect small strings that should instead be stored in a hash. Several other interesting possibilities exist.

I don't like Python; is such a parser available in language X?

Yes.

  1. redis-rdb is written in Ruby
  2. rdbhs is written in Haskell
  3. rdb-parser is written in Node.js
  4. rdb is written in Go
  5. rdb-rs is written in Rust

You should directly contact the respective authors in case you have questions.

You can always create a parser for your language of choice. The dump file specification is straightforward. The parser code is contained in a single file - parser.py, so it should be easy to port.

You can reuse the test dump files to test your parser implementation. parser_tests.py uses these dump files to ensure the parser is working properly. You can use these tests as a starting point for your parser implementation.