mash-playbook/docs/services/keydb.md

3.4 KiB

KeyDB

KeyDB is an open source, in-memory data store used by millions of developers as a database, cache, streaming engine, and message broker.

We used to advocate for using Redis, but since Redis is now "source available" we recommend that you use KeyDB instead. KeyDB is compatible with Redis, so switching should be straightforward. You can learn more about the switch from Redis to KeyDB in this changelog entry for matrix-docker-ansible-deploy.

Some of the services installed by this playbook require a KeyDB data store.

Warning: Because KeyDB is not as flexible as Postgres when it comes to authentication and data separation, it's recommended that you run separate KeyDB instances (one for each service). KeyDB supports multiple database and a SELECT command for switching between them. However, reusing the same KeyDB instance is not good enough because:

  • if all services use the same KeyDB instance and database (id = 0), services may conflict with one another
  • the number of databases is limited to 16 by default, which may or may not be enough. With configuration changes, this is solveable.
  • some services do not support switching the KeyDB database and always insist on using the default one (id = 0)
  • KeyDB does not support different authentication credentials for its different databases, so each service can potentially read and modify other services' data

If you're only hosting a single service (like PeerTube or NetBox) on your server, you can get away with running a single instance. If you're hosting multiple services, you should prepare separate instances for each service.

Configuration

To enable this service, add the following configuration to your vars.yml file and re-run the installation process to host a single instance of the KeyDB service:

########################################################################
#                                                                      #
# keydb                                                                #
#                                                                      #
########################################################################

keydb_enabled: true

########################################################################
#                                                                      #
# /keydb                                                               #
#                                                                      #
########################################################################

To host multiple instances of the KeyDB service, follow the Running multiple instances of the same service on the same host documentation or the KeyDB section (if available) of the service you're installing.