Redis is an open-source (BSD licensed), in-memory key-value data structure store used as a database, cache, and message broker. Redis supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperlog logs, geospatial indexes, and streams. Redis also provides high availability with Redis Sentinel software logic, creating automatic partitioning across Redis nodes with Redis Cluster.
At the end of the guide, you will know how to install and configure Redis on your AlmaLinux operating system.
Table of Contents
- Recommended OS: AlmaLinux 8.
- User account: A user account with sudo privilages or root access (su command).
Updating Operating System
Update your AlmaLinux operating system to make sure all existing packages are up to date:
sudo dnf upgrade --refresh -y
The tutorial will be using the sudo command and assuming you have sudo status. To verify sudo status on your account:
Example output showing sudo status:
[joshua@localhost ~]$ sudo whoami root
If you have not set up a sudo user account and would like to, visit our tutorial on How to Add a User to Sudoers on AlmaLinux.
To use the root account, use the following command with the root password to log in.
By default, Redis comes in AlmaLinux default App stream. However, you have the option of installing Redis series 5 or 6. By default, with most Linux distributions, including AlmaLinux series 5 is selected.
To view the available modules to install Redis from, use the following command in your terminal.
sudo dnf module list redis
As you can see with the output, series 5 is the default with the flag [d] on the Stream column. Perhaps you want to install the newer version of Redis. To do this, use the following command to swap versions.
sudo dnf module enable redis:6
Type “Y”, then press the “ENTER KEY” to proceed with the installation
Re-run the dnf module list redis command to see the new default, then install Redis with the following tutorial.
If you have second thoughts or require Redis series 5, you will need to uninstall the existing Redis series 6 build and reset the module list to default with the following command.
sudo dnf module reset redis -y
Example output if successful:
In your terminal, execute the following command.
sudo dnf install redis
Type “Y”, then press “ENTER KEY” to proceed with the installation.
Verify Redis was installed correctly by verifying its version and build command:
By default, Redis is not enabled on boot or activated after installation.
To start the Redis service:
sudo systemctl start redis
To enable automatic start for Redis service on system boot:
sudo systemctl enable redis
Next, verify the status and make sure Redis is running and, more importantly, with no errors:
systemctl status redis
Note, Reddis actively listens to localhost on the default port 6379. To confirm this type, the following:
ps -ef | grep redis
joshua 8492 5522 0 00:44 pts/0 00:00:00 grep --color=auto redis
Now, while you are testing everything is working and operational, it’s a good idea to connect to your Redis service and then perform a ping test.
To perform the test, enter the following command:
Once connected, your terminal will display (127.0.0.1:6379). Now ping the Redis service as follows:
127.0.0.1:6379> ping PONG
Type the following to exit the Redis instance:
Congratulations, you have installed Redis on your AlmaLinux operating system and verified it is operational. Next, you can configure Redis.
How to Configure Redis
Redis can be configured in a few ways. The most notable action of why people use Redis is for caching purposes. To do this, you need to open the “/etc/redis/redis.conf” file using nano editor.
sudo nano /etc/redis.conf
Configure Max Memory
Now, add the following to the end of the file. Note that you can change the memory value to whatever you like or, more importantly, optimal for your web application and server hardware.
maxmemory 500mb maxmemory-policy allkeys-lru
As you can see, the setting in the guide has 500MB dedicated to Redis as it is on a dedicated host with lots of RAM to spare. Once the 500MB is exhausted, Redis removes any key as per the LRU algorithm.
Configure Network Access
Another option is to listen to all services or set an IP address/subnet if you like your Redis service.
First, find line 69 in the configuration file.
First, to listen to all network interfaces, Comment “#” the line bind to IP:
# bind 127.0.0.1 ::1
Note, make sure your internal network is trustworthy and appropriate security controls are in place.
To bind to an IP address, make sure it is a static IP address.
To bind a network subnet.
Note, it is highly suggested to set a password when using subnet or access to all interfaces to listen to.
Another security feature and to further harden Redis is to set a password on the Redis instance.
Navigate to line 507, and uncomment the “# requiredpass” line, and set a password.
Make sure this password is robust, numbers, letters, special symbols, and capitals randomized as Redis servers can be bruted forced on a decent box very well.
Next, when invoking the Redis-CLI, use the following command with the password that was set for the user.
“THEPASSWORDSET” is the password that was created.
When a user fails to log in, they will see the following error message.
(error) NOAUTH Authentication required.
When a user successfully logs in, they will see the following message.
Once done, save your changes CTRL+O then exit CTRL+X. Now restart the Redis service by typing:
sudo systemctl restart redis
Configure Firewalld for Redis
By default, no rules are set up for Redis. This means you will need to create allow rules which is essential to stop attacks on Redis, failure to secure Redis will lead to issues down the track, so do not skip this unless you have other means to protect your Redis installation.
First, add a new dedicated zone for Redis firewalld policy:
sudo firewall-cmd --permanent --new-zone=redis
Next, specify the allowed IP addresses that are permitted to access the Redis.
sudo firewall-cmd --permanent --zone=redis --add-source=22.214.171.124
Replace 126.96.36.199 with the IP address that will be added to the allow list.
Once you have finished adding the IP addresses, open the port of the Redis. By default, this is TCP port 6379.
sudo firewall-cmd --permanent --zone=redis --add-port=6379/tcp
Note, you can change the default port in your configuration file if you change the firewall port open rule above to the new value.
After running those commands, reload the firewall to implement the new rules:
sudo firewall-cmd --reload
Example output if successful:
Now, as you tested at the start of the guide by pinging your Redis service to make sure it was operational, you can try the firewall rules and changes in IP by using the “redis-cli” command:
redis-cli -h <ip address> ping
If setup correctly, the output should be:
How to Remove (Uninstall) Redis
To remove Redis, use the following command in your terminal.
sudo dnf autoremove redis -y
This will remove Redis from your system immediately.
Comments and Conclusion
In the guide, you have learned how to install Redis on AlmaLinux 8 by using its default repositories through the dnf package manager. You have learned how to test the service by pinging it and changing the memory limit and network interface to suit various setups.
To find more information about how to manage your Redis installation, visit the Redis documentation page.