DEV Community

Cover image for Redis
4 1

Redis

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.

Overview

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:

  1. If the information is in the cache, cache hit, the application retreives the information from redis and sends it to the client
  2. If not, cache miss, the application takes the information from the database , sends it to the client and stores it in the cache.

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.


Questions

  1. Is Redis Open Source?: No, Redis is not really open source and has 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.

  2. Does Redis Support Windows?: No, Redis does not support Windows, but you can install WSL/Ubuntu and install redis using

sudo apt install redis
Enter fullscreen mode Exit fullscreen mode
  1. I am using WSL, Why isn't redis server working on my system: When running on WSL, you can run redis-server using
redis-server --port 6000
Enter fullscreen mode Exit fullscreen mode

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

  1. Are there client libraries for Redis?: Actually yes. you can find them on the Redis website or you can build one yourself.

Installing Redis

On Linux, installing redis is as simple as

sudo apt install redis
Enter fullscreen mode Exit fullscreen mode

or on Mac:

brew install redis
Enter fullscreen mode Exit fullscreen mode

Running Redis

You need to have 2 instances of your terminal on

on the first one to run your server

redis-server -port <portnumber>
Enter fullscreen mode Exit fullscreen mode

and on the second one to run your client

redis-cli
Enter fullscreen mode Exit fullscreen mode

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

  1. Key-Value Pairs
  2. Lists
  3. Sets
  4. Hashes

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

Key-Value pairs are a common data structure in most programming languages.

  1. In Python it is called dictionaries or dict in short

  2. In Javascript it is called Maps

  3. 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

SurveyJS custom survey software

Build Your Own Forms without Manual Coding

SurveyJS UI libraries let you build a JSON-based form management system that integrates with any backend, giving you full control over your data with no user limits. Includes support for custom question types, skip logic, an integrated CSS editor, PDF export, real-time analytics, and more.

Learn more

Top comments (2)

Collapse
 
abhidatta0 profile image
Abhirup Datta β€’

Redis is not "truly" open source

Collapse
 
ezek-iel profile image
Ezekiel β€’

Yup. You are correct. Redis is closed source with Open source alternatives like Keydb and Memcached.

Cloudinary image

Optimize, customize, deliver, manage and analyze your images.

Remove background in all your web images at the same time, use outpainting to expand images with matching content, remove objects via open-set object detection and fill, recolor, crop, resize... Discover these and hundreds more ways to manage your web images and videos on a scale.

Learn more

πŸ‘‹ Kindness is contagious

Please leave a ❀️ or a friendly comment on this post if you found it helpful!

Okay