Book Image

Redis Essentials

Book Image

Redis Essentials

Overview of this book

Redis is the most popular in-memory key-value data store. It's very lightweight and its data types give it an edge over the other competitors. If you need an in-memory database or a high-performance cache system that is simple to use and highly scalable, Redis is what you need. Redis Essentials is a fast-paced guide that teaches the fundamentals on data types, explains how to manage data through commands, and shares experiences from big players in the industry. We start off by explaining the basics of Redis followed by the various data types such as Strings, hashes, lists, and more. Next, Common pitfalls for various scenarios are described, followed by solutions to ensure you do not fall into common traps. After this, major differences between client implementations in PHP, Python, and Ruby are presented. Next, you will learn how to extend Redis with Lua, get to know security techniques such as basic authorization, firewall rules, and SSL encryption, and discover how to use Twemproxy, Redis Sentinel, and Redis Cluster to scale infrastructures horizontally. At the end of this book, you will be able to utilize all the essential features of Redis to optimize your project's performance.
Table of Contents (17 chapters)
Redis Essentials
Credits
About the Authors
Acknowledgments
About the Reviewers
www.PacktPub.com
Preface
5
Clients for Your Favorite Language (Become a Redis Polyglot)
Index

Building the foundation


In this section, we will demonstrate how to create a simple time series library using Redis Strings. This library will be able to save an event that happened at a given timestamp with a method called insert. It will also provide a method called fetch to fetch values within a range of timestamps.

Later on, we will make this library memory-efficient using Hashes instead of Strings, and also add a feature to store and search for unique events in a given timestamp range using Sorted Sets and HyperLogLogs.

The solution supports multiple granularities: day, hour, minute, and second. Every time an event happens in the system, an increment is stored for that specific time in multiple granularities.

For instance, if an event happens on date 01/01/2015 at 00:00:00 (represented by the timestamp 1420070400), the following Redis keys will be incremented (one key per granularity):

  • events:1sec:1420070400

  • events:1min:1420070400

  • events:1hour:1420070400

  • events:1day:1420070400

All events...