The GridGain in-memory computing platform , built on Apache® Ignite™, includes an in-memory data grid. Redis® is primarily an in-memory key-value store. The data grid capabilities of both products include functionality which partitions and caches data in memory. Both of the data grid solutions can be scaled out across distributed clusters. However, there are many differences in the way caching, transactions, persistence, and data querying are supported. The GridGain in-memory computing platform also includes many additional features not included in Redis that are often highly valuable for companies that are moving to in-memory computing.
Detailed GridGain and Redis Feature Comparison
Our in-depth feature comparison will show you how the most current versions of GridGain Professional Edition, Enterprise Edition and Redis compare in 22 different categories including:
- Distributed Caching, Data Structures, Queries, Compute, Messaging and Events
- In-Memory Streaming
- ACID Compliant Transactions and Locks
- Persistence and Data Loading
- Security and Audit
- Configuration and Grid Management
- Supported Platforms, Standards and Integrations
- Cloud and Virtualization Support
Key Differences Between GridGain and Redis
The following are major differences which should be considered when choosing an in-memory solution:
- JCache (JSR 107) – GridGain and Apache Ignite data grids are implementations of the JCache (JSR 107) specification that provides a simple to use, yet very powerful API for data access. Redis does not implement any standard.
- ODBC & JDBC – GridGain and Apache Ignite come with ODBC/JDBC drivers out-of-the-box, allowing you to retrieve distributed data from cache using standard SQL queries and JDBC/ODBC API. Redis does not support ODBC/JDBC connectivity and allows data retrieval only via a client-side key-value API.
- ACID Transactions – GridGain and Apache Ignite have full support for ACID transactions, including OPTIMISTIC and PESSIMISTIC concurrency modes, as well as READ_COMMITTED, REPEATABLE_READ, and SERIALIZABLE isolation levels. Redis provides very limited support for client-side OPTIMISTIC transactions. In case of concurrent update, clients are required to manually retry a transaction.
- Database Integration – GridGain and Apache Ignite can automatically integrate with external databases – RDBMS, NoSQL, and HDFS. They support Write-through and Read-through caching where cache data updates are propagated to the database, and data unavailable in cache is loaded from the database, respectively. Redis does not integrate with external databases.
- Collocated (server-side) Processing – GridGain and Apache Ignite allow executing any native Java, C++, and .NET/C# code directly on the server-side, close to the data, in a collocated fashion. Redis generally does not have any collocated processing and allows primitive server-side code execution only with LUA scripting language.
- Data Partitioning and Replication – GridGain and Apache Ignite support data partitioning and replication across the cluster. They automatically rebalance the data in case of any topology changes. Additionally, in GridGain/Ignite, by default there is no concept of master-slave nodes; all nodes are equal. Redis, on the other hand, supports partitioning but requires a set of fairly involved manual steps to setup master and slaves nodes so that rebalancing works properly from master node to slaves nodes (the rebalancing doesn’t work in the reverse direction). For setups where replication is used, if the Redis master node re-starts in case of a crash, the cluster has to be pre-configured properly to avoid situations where slave nodes may end up with an empty data set.
- Data Streaming – GridGain and Apache Ignite provide support for in-memory streaming, including support for maintaining and querying sliding windows of streaming data. Redis does not offer any support for streaming.
- SQL Queries - GridGain and Apache Ignite support complete SQL (ANSI-99) syntax, including distributed SQL JOINs (collocated and non-collocated) for querying in-memory data. Redis does not support SQL and users have to perform JOINS manually by combining multiple query results.