1.1.1 Redis compared to other databases and software

back to home

1.1.1 Redis compared to other databases and software

If you’re familiar with relational databases, you’ll no doubt have written SQL queries to relate data between tables. Redis is a type of database that’s commonly referred to as No SQL or non-relational. In Redis, there are no tables, and there’s no database-defined or -enforced way of relating data in Redis with other data in Redis.

It’s not uncommon to hear Redis compared to memcached, which is a very high-performance, key-value cache server. Like memcached, Redis can also store a mapping of keys to values and can even achieve similar performance levels as memcached. But the similarities end quickly — Redis supports the writing of its data to disk automatically in two different ways, and can store data in four structures in addition to plain string keys as memcached does. These and other differences allow Redis to solve a wider range of problems, and allow Redis to be used either as a primary database or as an auxiliary database with other storage systems.

In later chapters, we’ll cover examples that show Redis being used for both a primary and a secondary storage medium for data, supporting a variety of use cases and query patterns. Generally speaking, many Redis users will choose to store data in Redis only when the performance or functionality of Redis is necessary, using other relational or non-relational data storage for data where slower performance is acceptable, or where data is too large to fit in memory economically. In practice, you’ll use your judgment as to where you want your data to be stored (primarily in Redis, or primarily somewhere else with a copy in Redis), how to ensure data integrity (replication, durability, and transactions), and whether Redis will fit your needs.

To get an idea of how Redis fits among the variety of database and cache software available, you can see an incomplete listing of a few different types of cache or database servers that Redis’s functionality overlaps in table 1.1.

Table 1.1 Features and functionality of some databases and cache servers
Name Type Data storage options Query types Additional features
Redis In-memory
non-relational database
Strings, lists, sets, hashes, sorted sets Commands for each data type for common access patterns, with bulk operations, and partial transaction support Publish/Subscribe, master/slave replication, disk persistence, scripting (stored procedures)
memcached In-memory key-value cache Mapping of keys to
Commands for create, read, update, delete, and a few others Multithreaded server for additional performance
MySQL Relational database Databases of tables of rows, views over tables, spatial and third-party extensions SELECT, INSERT, UPDATE, DELETE, functions, stored
ACID compliant (with InnoDB), master/slave and master/master replication
PostgreSQL Relational database Databases of tables
of rows, views over tables, spatial and third-party extensions, customizable types
SELECT, INSERT, UPDATE, DELETE, built-in functions, custom stored procedures ACID compliant, master/slave replication, multi-master replication (third party)
MongoDB On-disk
non-relational document store
Databases of tables of schema-less BSON documents Commands for create, read, update, delete, conditional queries,
and more
Supports map-reduce operations, master/slave replication, sharding, spatial indexes
Is Redis an in-memory database?

Redis is a persistent non-relational in-memory db and it features multiple data storage options including strings, lists, sets, hashes, and sorted sets.