High availability
IBM Cloud® Databases for Redis is a managed cloud database service that is fully integrated into the IBM Cloud environment. The database, storage, and supporting infrastructure all run in IBM Cloud.
Database high-availability features
Databases for Redis provides replication, fail-over, and high-availability features to protect your databases and data from infrastructure maintenance, upgrades, and failures. Deployments contain a cluster with two data members in a primary plus replica configuration, and kept in sync by using asynchronous replication. High-availability is monitored and managed with three Redis sentinels.
By default, data persistence is enabled on all deployments and your data is written to disk. The data persistence model uses preamble snapshots and AOF (Append Only File).
The interval for Redis to write to disk (fsync
) is set to once every second.
You can turn off data persistence, which is useful for configuring Redis as a cache.
High availability for your application
You want to design your applications to handle a temporary loss in connectivity to your deployment or to IBM Cloud.
Many Redis clients have features for error checking and handling, see the following examples:
- The Python client
Redis.py
produces aConnectionError
when a connection fails and another command is run. The client can also issue health checks periodically or before commands. - The Java client
Jedis
produces aJedisConnectionException
when it can't reach the database, and it tries to reconnect. However, it doesn't automatically retry a command, as not every command is safe to retry or run multiple times. - The C# driver
StackExchange.Redis
has adjustable parameters for client-side timeout, reconnect, and retry logic. You can tune these parameters to suit your application requirements.
A good example of cloud-ready application development that uses the Node.js client ioredis
is in the IBM Developer article Error detection and handling with Redis.
For more information on connecting your applications to Databases for Redis, see the following documentation pages:
- Connecting to an IBM Cloud application,
- Connecting an external application (including TLS and self-signed certificate support), and
- Connecting with a command line client.
In all cases, you must review your client's documentation to help you design a stable application that checks for connectivity, reconnects when disconnected, and retries commands when it makes sense for your application to do so.
Several minutes of database unavailability or connection interruptions are not expected. Open a support ticket with details if you have time periods longer than a minute with no connectivity.
Monitoring the state of your databases
Databases for Redis has IBM® Cloud Logs integration so that you can view live and historical logs.
Checking your deployment's logs helps you monitor the state of HA and replication for your deployment. If you are having persistent issues with your applications, logs can also provide insight to what is happening on your databases when you are experiencing connection failures or other disruptions.
High availability, disaster recovery, and SLA resources
Databases for Redis deployments conform to the IBM Cloud Databases HA, DR, and SLA information and terms.