Redis is a NOSQL database in which data is stored in key-value pairs.
Redis stores data on main memory meaning its fast but its volatile unlike database systems like PostgreSQL which stores data on disk.
In an application with a server and a database, accessing information on the database will cause latency.
Key-Value databases like redis is often kept in front of those databases and access operations takes 2 steps:
With these 2 steps and given that main memory has lower latency than disk, we can say that redis can be used to store and access frequent, recent data and expensive operations thereby making applications 10 to 50x faster.
It is thereby a fact that if at all you are going to building an application that is going to be scalable in the future, Redis(or databases similar to Redis) is indispensable.
Is Redis Open Source?: Yes, Redis is open source with a special kind of license but there are alternatives like KeyDB by Snapchat and Memcached that are open source. KeyDB is a fork of Redis but as of now can only run on Linux.
Does Redis Support Windows?: No, Redis does not support Windows, but you can install WSL/Ubuntu and install redis using
sudo apt install redis
redis-server --port 6000
where 6000 is the port on your local server you want to run it on. (i.e. 127.0.0.1:6000).
Most issues are due to the fact that the default port that redis-server is using is already being used
On Linux, installing redis is as simple as
sudo apt install redis
or on Mac:
brew install redis
You need to have 2 instances of your terminal on
on the first one to run your server
redis-server -port
and on the second one to run your client
redis-cli
When building a web app, you dont need to run the client but the server needs to be running
Redis Concepts
There are 3 main concepts in redis you should understand or 4
All other data structures are mainly an advanced implementation of the first
By list, I meant array not linked list and thats what redis calls it.
Key-Value pairs are a common data structure in most programming languages.
In Python it is called dictionaries or dict in short
In Javascript it is called Maps
In C# it is called Dictionaries
There are 6 main operations for key-value pairs in Redis
Operations | Explanations | Examples | Further Explanation |
---|---|---|---|
SET | Creates a key-value pair | SET name John | Sets key to map to value |
GET | Gets value for key | GET name | This returns John |
DEL | Deletes the key value pair | DEL name | This removesthe key value pair name from the database |
EXISTS | Checks if a key exists in the redis database | EXISTS name | returns 1 or 0 corresponding to True or False |
FLUSHALL | Clears the entire cache | FLUSHALL | more or less like DROP TABLE in postgres |
KEYS * | Returns all the keys in the database | KEYS * |
There are also Time-Based Operations. In time based operations, the key is only in the cache for a set amount of time, after the time expires, the cache deletes the key.
There are 2 main Time Based Operations
Operations | Explanations | Examples | Further Explanation |
---|---|---|---|
EXPIRE | Expires a key after being defined | EXPIRE name 10 | Deletes the key-value name after 10s .The key must be defined with SET before calling EXPIRE . A common alternative is; |
SETEX | Expires a key upon definition | SETEX age 30 15 | Sets the key age to value 30 and thereafter deleted the key-value pair after 15s |
TTL | Time To Live | TTL age | Returns the time remaining before deletion of the age key |
The Blog is getting too long now, I will talk about lists, sets, hashmaps and also possible interview questions about redis in another blog.
Please if you have questions, please comment them down below, I will try my best to answer them ⭐. Happy Coding
Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.
Copyright© 2022 湘ICP备2022001581号-3