How To Install and Use Redis

About Redis

Redis, developed in 2009, is a flexible, open-source, key value data store. Following in the footsteps of other NoSQL databases, such as Cassandra, CouchDB, and MongoDB, Redis allows the user to store vast amounts of data without the limits of a relational database. Additionally, it has also been compared to memcache and can be used, with its basic elements as a cache with persistence.

Note: Redis can be installed automatically on your Droplet by adding this script to its User Data when launching it. Check out this tutorial to learn more about Droplet User Data.

Setup

Before you install redis, there are a couple of prerequisites that need to be downloaded to make the installation as easy as possible.

Start off by updating all of the apt-get packages:

sudo apt-get update

Once the process finishes, download a compiler with build essential which will help us install Redis from source:

sudo apt-get install build-essential

Finally, we need to download tcl:

sudo apt-get install tcl8.5

Installing Redis

With all of the prerequisites and dependencies downloaded to the server, we can go ahead and begin to install redis from source:

Download the latest stable release tarball from Redis.io.

wget http://download.redis.io/releases/redis-stable.tar.gz

Untar it and switch into that directory:

tar xzf redis-stable.tar.gz

cd redis-stable

Proceed to with the make command:

make

Run the recommended make test:

make test

Finish up by running make install, which installs the program system-wide.

sudo make install

Once the program has been installed, Redis comes with a built in script that sets up Redis to run as a background daemon.

To access the script move into the utils directory:

cd utils

From there, run the Ubuntu/Debian install script:

sudo ./install_server.sh

As the script runs, you can choose the default options by pressing enter. Once the script completes, the redis-server will be running in the background.

You can start and stop redis with these commands (the number depends on the port you set during the installation. 6379 is the default port setting):

sudo service redis_6379 start
sudo service redis_6379 stop

You can then access the redis database by typing the following command:

redis-cli

You now have Redis installed and running. The prompt will look like this:

redis 127.0.0.1:6379>

To set Redis to automatically start at boot, run:

sudo update-rc.d redis_6379 defaults

Securing Redis

By default, Redis server allows connections from anywhere which is insecure. Binding to localhost will restrict access to the server itself and is a good first step to protecting your server.

Open the Redis configuration file for editing:

sudo nano /etc/redis/6379.conf

Locate this line and make sure it is uncommented (remove the `#` if it exists):

When retrieving data you can define the range with 2 parameters: the first and the last element (the first element is considered 0). If your end parameter is -1, all the elements through the end of the list will be included. For example, if a list contains the 6 colors of the rainbow (arranged with the classic ROYGBV), you’ll be able to see the following results:

While Redis is very helpful in storing information, it can be also used to systematically expire data.

The time that a key should exist can be designated either in seconds or with a Unix Time stamp (seconds since 1/1/1970). Two helpful commands that can control expiration are EXPIRE, which sets the length of time that a key should exist, and TTL, which displays the time remaining before the key expires.

Attempting to retrieve the information after it has expired results in “nil”

> GET classified:information
(nil)

Incrementing:

Redis also has the capability to increment strings in its database in an atomic operation. If a process is occurring to increment a value, no other command can do it at the same time and the numbers will remain consistent across the database.

Redis also has the capability to perform transactions, which must abide by two principals:1) The commands must be performed in order. They will not be interrupted during the process by other requests. 2) The transactions must be processed in their entirety.

Transactions are begun with the command MULTI and subsequently run with the command EXEC .

If, for some reason, there is a server issue that disrupts the process, the transaction will be exited, and Redis will experience an error blocking it from restarting until the command, edis-check-aof is run and the partial transaction is undone and removed.

If you want to combine strings, you can do that with REDIS sets, a collection of unordered strings.

Some common commands for Sets are:

SADD: Add one or members to a set

SMEMBERS: Get all set members

SINTER: Find the intersection of multiple sets

SISMEMBER: check if a value is in a set

SRANDMEMBER: Get a random set member

Sets can be helpful in a variety of situations. Because each member of a set is unique, adding members to a set does not require a “check then add” operation. Instead the set will check whether the item is a duplicate whenever a SADD command is performed.

Lists in Redis are a collection of ordered values. This is in contrast to Sets which are unordered. You can add elements to the beginning or end of a list (even when there are over ten million elements in the list) with great speed.

Lists can often be used to create a timeline of events or maintain a collection of a limited number of elements.

Hashes

Hashes in Redis are a useful tool to represent objects with many fields. They are set up to store vast amount of fields in a small amount of space. A hash can store more than 4 billion field-value pairs.

If you need to look up specific information, HMGET displays the values for only the requested fields.

> hmget user:1 username email
1) "jsmith"
"jsmith@gmail.com"

Conclusion

Since its release Redis has quickly gained a lot of popularity, and is harnessed by the likes of github, flickr, Disqus, and Craigslist. Additionally, Redis can be used with most programming languages.

This has just been an overview of some the basic features of redis. We’ll be happy to answer specific questions in our Q&A forum.