EBOOK – REDIS IN ACTION

This book covers the use of Redis, an in-memory database/data structure server.

open all | close all

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
values

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
procedures

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