This topic answers frequently asked questions about VMware GemFire for Redis Apps.
VMware GemFire® for Redis™ Apps is an add-on for VMware GemFire® that allows applications currently using a Redis client to connect to and send Redis commands to GemFire. This allows those applications to use GemFire as a datastore for Redis clients, with few to no code changes.
VMware GemFire® is an enterprise grade key-value NoSQL store. It offers high-speed in-memory data and compute grid with distributed database capabilities for high-performance, low latency applications where data must be consistent, up to date and delivered with sub-millisecond response times at scale, across multiple data centers. It is a key-value object store that offers highly available parallel queues, continuous availability and an event driven architecture that can scale dynamically with no downtime.
Yes. VMware GemFire for Redis Apps is an add-on that brings additional functionality to the core VMware GemFire product. It provides a set of APIs that are compatible with Redis clients and which utilize the underlying GemFire APIs for data storage and enterprise features.
The first step is to download the add-on from Tanzu Net. Next, for detailed steps on how to get started please follow the directions in Quickstart Using VMware GemFire.
VMware GemFire for Redis Apps offers a Redis-like experience. This means that it is not tied to a specific version of OSS Redis server. At this time, VMware GemFire for Redis Apps is compatible with over 130 Redis commands, including most Redis Strings, Lists, Sets, Hashes, Sorted Sets, and Pub/Sub commands. We continue to add new Redis commands and data types with each new release. For a full list of supported commands please refer to the list of compatible Redis Commands.
Not currently. At this time, VMware GemFire for Redis Apps is compatible with over 130 Redis commands, including most Redis Strings, Lists, Sets, Hashes, Sorted Sets, and Pub/Sub commands. Some Redis features are not yet supported including Lua Scripting, Redis data structures not listed above (e.g. Streams, Bitmaps, etc.), Keyspace notifications, Redis Transactions, ACL Commands, the RESP3 protocol, and multiple eviction policies.
VMware GemFire for Redis Apps is only compatible with Redis clients that support the CLUSTER commands and that are running in “cluster” mode. Cluster mode and commands are supported by many of the major Redis clients and frameworks. This includes Spring, Java (Jedis, Lettuce, Redisson), C#/.Net, GO, Python, and Node.js.
OSS Redis users that are looking for enterprise ready features out-of-the-box that are easy to manage and maintain. What are “enterprise ready features”? - High-Availability - Disaster Recovery and Data Persistence* - Scalability - Security - Consistent Replication - Monitoring Integrations - Multisite / Geo Replication
VMware GemFire for Redis Apps supports type-based migration of supported data types (Strings, Sets, Sorted Sets, Lists, Hashes) using the Redis Input/Output Tool. To migrate data from your currently running Redis instance to VMware GemFire for Redis Apps, follow the Type-Based Replication instructions in the Redis Input/Output Tools (RIOT) documentation.
No. Current Redis licensing restricts many of these modules from being included. Additionally, as this add-on was created for VMware GemFire, it is written in Java and will be incompatible with other Redis modules that are written in C.
In a cluster, VMware GemFire for Redis Apps allows users to configure the number of redundant copies of data, across all servers. When redundancy is configured, there will be 1 primary and 1 or more secondary copies of the data.
A VMware GemFire for Redis Apps cluster is a distributed system that is comprised of Members. Typically members are either a locator or a server.
VMware GemFire for Redis Apps clusters contain one to many VMware GemFire locators and servers, with data partitioned across each server.
Yes, when redundancy is configured, there are two layers of high availability that VMware GemFire for Redis Apps implements:
Data is divided amongst different GemFire servers by default. This means that losing a single GemFire server does not cause data loss.
Primary and secondary data are never stored in the same GemFire server and a GemFire cluster can be configured such that Primary and Secondary data are never stored in the same data zone. Thus, if a data zone goes down, GemFire can restore consistency.
For more information on configuring redundancy zones with VMware GemFire please refer to the documentation.
Yes. VMware GemFire for Redis Apps offers Backup and Restore options that are like Redis.
Data Persistence. When persistence is enabled, all commands that change a key/value pair are also written to a file on disk.
Backup / Restore. When persistence is enabled, this will create a point-in-time backup for the cluster, using the files written to disk when persistence was enabled. This backup can then be used to restore a cluster. There are two types of backups:
Snapshots. Snapshots allow you to save a region’s current data and reload it later. However, unlike persistent backups which capture a single point in time, snapshots must iterate over the data to export it and are only causally consistent. Some but not all writes that happen while the snapshot process is running may be included.
No. Currently, VMware GemFire for Redis Apps does not support Redis RDB or AOF files.
VMware GemFire for Redis Apps does not have any programmatic restrictions on the size of the cluster users can create.
Yes. VMware GemFire allows users to scale their cluster up or down, horizontally and vertically, without interrupting application connections. When scaling vertically, users can add more memory and/or CPUs to each server in the cluster. Scaling horizontally simply means adding or removing a server from the cluster. When the cluster is horizontally scaled, it will automatically redistribute the data amongst the available servers, making sure the cluster is well balanced.
VMware GemFire (and thus VMware GemFire for Redis Apps) supports encryption for data in transit. VMware GemFire for Redis Apps supports up to TLS 1.3 and mutual TLS, between applications and the VMware GemFire for Redis Cluster.
No. Currently, VMware GemFire for Redis Apps does not support the Redis Access Control List commands.
VMware GemFire for Redis Apps supports a pluggable security model, which allows you to integrate with your security system as needed. This is accomplished through the VMware GemFire Security Manager. VMware GemFire supports authentication and authorization and integration with popular security protocols and systems such as OAuth and LDAP. Additionally, VMware GemFire for Redis Apps supports the Redis AUTH command (both with password only and username and password). For more detailed instructions on configuring Security in VMware GemFire for Redis Apps please see the Security documentation.
Consistent replication, sometimes referred to as Strong Consistency, means that every read receives the most recent data or an error. This is accomplished by routing all writes on a given key to the primary copy of that key. A lock is placed on the key while distributing updates to other servers that host a copy of the key. Because all updates are serialized on the primary GemFire server, all servers apply the updates in the same order and consistency is always maintained. Once all servers have been updated, the cluster sends back an acknowledgement to the client (or an error if something went wrong).
When a write command is sent to a Redis Cluster, the node that receives the write immediately sends an acknowledgement back to the Client, that the write was received. The write is then propagated to all replicas of the node. This means that if the node that received the write command goes down, the write would not be sent to the replicas.
“Redis Cluster does not guarantee strong consistency. In practical terms this means that under certain conditions it is possible that Redis Cluster will lose writes that were acknowledged by the system to the client.” - OSS Redis Documentation