Redis is a key value storage used widely for its support and flexibility. It is an open source application mainly used in Database for fast accessing of Data in a Database.
Redis is the fastest database and a lot of people love it for its speed. And most of the people’s common question is about Redis Persistence.
Also, there is a myth around that and people think that they can only use Redis for storing temporary data and won’t give persistence like MySQL and MongoDB.
But:
It is not true. You can store the data securely for a long time in Redis as same as MySQL and MongoDB.
Today in this article, we are going to see how to install and configure Redis on Ubuntu server.
Requirement:
You should have Ubuntu 16.04 configured according to this article.
Installing Redis
First, update the Ubuntu Package Repository using the below command.
$ sudo apt-get update
Also, you have to install the build-essential and tcl package on your Ubuntu server. The below command will install both packages.
$ sudo apt-get install build-essential tcl
Download the Redis source
After that, you have to download the Redis from their official page.
First, we will download the Redis source code to a temporary file.
Then, We will extract the file and install it.
First, change the directory
$ cd /tmp
Now:
Download the Redis source code file from their official website.
$ curl -O http://download.redis.io/redis-stable.tar.gz
Make sure that you have installed the curl function to do this.
$ tar xzvf redis-stable.tar.gz
The file will be extracted to the Redis-stable file.
After that change the directory to redis-stable
$ cd redis-stable
Installing Redis
You have to use the make command utility to compile all the Redis binaries.
Now you are in the redis-stable folder. Execute the below command.
Since the redis key values need not be text strings, They are in binary status and processed so fast.
$ make
After the compilation of Redis binary, you have to check whether everything is working correctly or not.
Execute the below command
$ make test
Then, install the binaries using the below command. Make sure that you are staying in the same folder and not on home directory.
$ sudo make install
Redis Configuration
Here, we are going to create a configuration directory for redis and we will copy the original configuration file from the tmp folder.
First, create the directory to store configuration file.
$ sudo mkdir /etc/redis
Then copy the configuration file to that directory.
$ sudo cp /tmp/redis-stable/redis.conf /etc/redis
Now, edit the configuration file.
$ sudo nano /etc/redis/redis.conf
In that configuration file, you have to find the supervised directive. It would be set to ‘no’ by default and you have to set it to systemd.
After the change, the file will look like below one
/etc/redis/redis.conf
. . .
# If you run Redis from upstart or systemd, Redis can interact with your # supervision tree. Options: # supervised no - no supervision interaction # supervised upstart - signal upstart by putting Redis into SIGSTOP mode # supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET # supervised auto - detect upstart or systemd method based on # UPSTART_JOB or NOTIFY_SOCKET environment variables # Note: these supervision methods only signal "process is ready." # They do not enable continuous liveness pings back to your supervisor. supervised systemd
Previously we have talked about the Redis Persistence. To make the redis data persistence, you have to store them in a particular place.
Also, the Redis should have the Permission to read and write in that location,
Find the dir directory in the configuration. And set the location to /var/lib/redis
This is how the file will look like after the change.
/etc/redis/redis.conf
. . . # The working directory. # # The DB will be written inside this directory, with the filename specified # above using the 'dbfilename' configuration directive. # # The Append Only File will also be created inside this directory. # # Note that you must specify a directory here, not a file name. dir /var/lib/redis . . .
Systemd Unit file Creation of Redis
Now, you have to create a systemd unit file for Redis. To do that, execute the below command.
Open redis.service file using nano editor.
$ sudo nano /etc/systemd/system/redis.service
The network should be available before the initiation of service. For that, use the following code.
[Unit] Description=Redis In-Memory Data Store After=network.target
After that we have to define the service. The service section will contain how a server should behave.
The service cannot be run on the root for some security reasons. For that, we will use a username and user group.
The user group will be entirely dedicated the service.
To start the service, we will use the Redis-server binary and to stop the service; we will use the Redis-cli binary.
Also, set the Restart directive to ‘always’ to make it recover from any failure.
/etc/systemd/system/redis.service
[Unit] Description=Redis In-Memory Data Store After=network.target [Service] User=redis Group=redis ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf ExecStop=/usr/local/bin/redis-cli shutdown Restart=always At last, define the [install] section. Here, you will set the target to which the service has to be applied. [Install] WantedBy=multi-user.target
After that, save and close the service file.
Creating the Redis User, Group and Directories
Since we cannot use the root for the Redis service to run, we are going to create user and user group.
Use the below command to create a user and user group.
$ sudo adduser --system --group --no-create-home redis
Then, you have to create the directory.
$ sudo mkdir /var/lib/redis
The directory is created and now you have to give the ownership of the directory to the newly created user and user group.
$ sudo chown redis:redis /var/lib/redis
Now:
You have to block the user or group which doesn’t have ownership towards the directory.
$ sudo chmod 770 /var/lib/redis
Check the Redis status
First, you have to start the Redis. Use the below command to start the Redis.
$ sudo systemctl start redis
Now, check the status of Redis
$ sudo systemctl status redis
If the output is active, then it means that you have not made any errors.
Output
● redis.service - Redis Server Loaded: loaded (/etc/systemd/system/redis.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2017-04-16 12:25:18 EDT; 1min 43s ago Process: 3115 ExecStop=/usr/local/bin/redis-cli shutdown (code=exited, status=0/SUCCESS) Main PID: 3124 (redis-server) Tasks: 3 (limit: 512) Memory: 864.0K CPU: 179ms CGroup: /system.slice/redis.service └─3124 /usr/local/bin/redis-server 127.0.0.1:6379
Test the Redis Server
You have to check whether the Redis server is working properly or not. For that, connect to the server using the client comment.
$ redis-cli
By default, the redis will be connected to 127.0.0.1. Enter the below address to check the connectivity.
127.0.0:6379> ping
You will get the output
PONG
Again test the Redis server.
You will get following output
“It’s working!”
After that, return to to the shell by typing
Exit
That’s all. Now you are done with all the configurations and testing process. The next task is you have to make the Redis start at the boot.
The below command is enough to do that.
$ sudo systemctl enable redis
You will get the following output
Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /etc/systemd/system/redis.service.
Conclusion:
Now you have learned how to install and configure redis on Ubuntu.
If you still have the doubt in the execution of Redis, just ask them in the comment section.
I will help you to fix it.