EBOOK – REDIS IN ACTION

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

open all | close all

Chapter 6: Application components in Redis

This chapter covers

  • Building two prefix-matching autocomplete methods
  • Creating a distributed lock to improve performance
  • Developing counting semaphores to control concurrency
  • Two task queues for different use cases
  • Pull messaging for delayed message delivery
  • Handling file distribution

In the last few chapters, we’ve gone through some basic use cases and tools to help
build applications in Redis. In this chapter, we’ll get into more useful tools and
techniques, working toward building bigger pieces of applications in Redis.

We’ll begin by building autocomplete functions to quickly find users in short
and long lists of items. We’ll then take some time to carefully build two different
types of locks to reduce data contention, improve performance, prevent data corruption,
and reduce wasted work. We’ll construct a delayed task queue, only to augment
it later to allow for executing a task at a specific time with the use of the lock we just created. Building on the task queues, we’ll build two different messaging systems
to offer point-to-point and broadcast messaging services. We’ll then reuse our
earlier IP-address-to-city/-country lookup from chapter 5, and apply it to billions of
log entries that are stored and distributed via Redis.

Each component offers usable code and solutions for solving these specific problems
in the context of two example companies. But our solutions contain techniques
that can be used for other problems, and our specific solutions can be applied to a
variety of personal, public, or commercial projects.

To start, let’s look at a fictional web-based game company called Fake Game Company,
which currently has more than a million daily players of its games on YouTwit-
Face, a fictional social network. Later we’ll look at a web/mobile startup called Fake
Garage Startup that does mobile and web instant messaging.