Contents
Design ORS with Redis Cluster
Redis is an open source (BSD licensed), in-memory data structure store used as a database, cache, message broker, and streaming engine. To learn more about Redis, visit https://redis.io/docs/about/. Redis scales horizontally with a Redis Cluster topology. Data is automatically shared across multiple Redis Cluster nodes. Redis Cluster also provides some degree of availability.
A pool of connections to Redis Cluster will be shared between ORS worker threads; consequently each working thread will have a TCP connection to each Redis Cluster node.
Redis installation and configuration
Refer to Redis documentation at https://redis.io/docs/install/ for instructions on installation and configuration of Redis. There is no special configuration required in ORS with regards to installation of Redis.
ORS will store data in Redis under the following key:
ORS:<ORS_CLUSTER_NAME>
Redis recommended capacity estimate
The number of Redis Cluster Nodes and the amount of memory vary vastly depending on the number of expected simultaneous ORS sessions on the ORS Cluster and session complexity. Genesys recommends that you use Redis Cluster with a minimum of 3 nodes. On average, 3 nodes Redis Cluster should be sufficient to handle upto 9 HA pairs of ORS applications.
For Redis Node Memory amount, Genesys recommends a similar memory allocation per Redis node as for the corresponding ORS application.
No special Redis Cluster configuration required for ORS to be able to use it for persistence. However, it is recommended to setup Redis Cluster with high availability and AOF persistence enabled. Additionally, authentication (user/password) or encryption (TLS) can be configured for Redis Cluster for ORS connection.
Expiration and cleanup of data stored in Redis
Redis works with an in-memory dataset. ORS deletes all keys it stores in Redis when they are not needed. Additionally, each record that is added to Redis has an expiry time (TTL) associated with it, or a periodical cleaning up procedure is run. This expiry time (TTL) helps to prevent invalid Redis entries and to limit Redis DB memory growth.