Open In App

Complete Guide to Redis Java

Last Updated : 27 Sep, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

Redis is an open-source, in-memory data store that is particularly useful for applications that require high-speed data retrieval and low-latency access. In Java programs, you can interact with Redis using the Jedis library, a popular Java client for Redis.

Redis Installation in Java

To use Redis with Java programs, you need to install Redis on your system. Here’s a basic installation guide:

1. Download Redis

You can download the latest stable version of Redis from the official website or use a package manager if your operating system supports it.

2. Extract and Compile

After downloading, extract the files and navigate to the extracted directory in your terminal. Run the following commands:

$ tar xzf redis-x.y.z.tar.gz
$ cd redis-x.y.z
$ make

3. Start Redis Server

Once compiled, you can start the Redis server by running:

$ src/redis-server

4. Connecting to Redis Server from Java:

To connect to the Redis server from your Java program, you’ll need to include the Jedis library in your project. You can add it to your project using Maven or Gradle, depending on your build tool.

Here’s how you can create a connection:

Java




import redis.clients.jedis.Jedis;
 
public class RedisExample {
    public static void main(String[] args) {
        // Connect to the Redis server
        Jedis jedis = new Jedis("localhost");
 
        // Perform Redis operations here
 
        // Close the connection
        jedis.close();
    }
}


Basic Redis Commands and Examples

Redis supports various data types and operations. Here are some basic commands and examples using Jedis:

1. String Data Type

The string data type in Redis is a simple key-value pair, where the value is a string. It’s useful for storing simple data like numbers, text, or serialized objects.

Command:

SET key value: Sets the value of a key.

jedis.set(“name”, “John”);

This sets the value of the key “name” to “John”. The key-value pair is now stored in Redis.

Java




import redis.clients.jedis.Jedis;
 
public class StringExample {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("localhost");
 
        // Set a key-value pair
        jedis.set("name", "John");
 
        // Get the value by key
        String name = jedis.get("name");
        System.out.println("Name: " + name);
 
        jedis.close();
    }
}


Output:

Name: John

2. Hash Data Type

A hash in Redis is a collection of field-value pairs, where each field is a unique identifier within the hash.

Commands:

HSET key field value: Sets the field in the hash stored at the key to the specified value.
HGET key field: Gets the value of a field in the hash.

jedis.hset(“user:1”, “name”, “Alice”);
jedis.hset(“user:1”, “age”, “25”);

In this example, we’re storing information about a user with ID 1. We set the name and age fields using HSET. The data is stored as a hash with the key “user:1”.

Java




import redis.clients.jedis.Jedis;
 
public class HashExample {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("localhost");
 
        // Set field-value pairs in a hash
        jedis.hset("user:1", "name", "Alice");
        jedis.hset("user:1", "age", "25");
 
        // Get field values from a hash
        String userName = jedis.hget("user:1", "name");
        String userAge = jedis.hget("user:1", "age");
        System.out.println("User: " + userName + ", Age: " + userAge);
 
        jedis.close();
    }
}


Output:

User: Alice, Age: 25

3. List Data Type

A list in Redis is an ordered collection of values. Lists allow for fast insertion and retrieval of elements at the beginning, middle, or end of the list.

Commands:

LPUSH key value [value …]: Prepends one or multiple values to a list.
LRANGE key start stop: Retrieves a range of elements from a list.

jedis.lpush(“fruits”, “apple”, “banana”, “orange”);
List<String> fruits = jedis.lrange(“fruits”, 0, -1);

We use LPUSH to add fruits to the “fruits” list. The order will be: “orange”, “banana”, “apple” (since we used LPUSH, the last item specified is added first). Then, LRANGE retrieves all elements from the “fruits” list

Java




import redis.clients.jedis.Jedis;
import java.util.List;
 
public class ListExample {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("localhost");
 
        // Add items to a list
        jedis.lpush("fruits", "apple", "banana", "orange");
 
        // Get items from a list
        List<String> fruits = jedis.lrange("fruits", 0, -1);
        System.out.println("Fruits: " + fruits);
 
        jedis.close();
    }
}


Output:

Fruits: [orange, banana, apple]

4. Set Data Type

A set in Redis is an unordered collection of unique values. Sets are useful for storing data that shouldn’t have duplicate entries.

Commands:

SADD key member [member ...]: Adds one or more members to a set.
SMEMBERS key: Returns all the members of a set.

jedis.sadd(“tags”, “java”, “redis”, “programming”);Set<String> tags = jedis.smembers(“tags”);

Here, we use SADD to add tags to the “tags” set. Since sets only store unique values, even if we add a tag that already exists, it won’t be duplicated. SMEMBERS retrieves all members of the “tags” set.

Java




import redis.clients.jedis.Jedis;
import java.util.Set;
 
public class SetExample {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("localhost");
 
        // Add items to a set
        jedis.sadd("tags", "java", "redis", "programming");
 
        // Get all items in a set
        Set<String> tags = jedis.smembers("tags");
        System.out.println("Tags: " + tags);
 
        jedis.close();
    }
}


Output :

Tags: [programming, java, redis]

Note: These are just the basic commands for each data type in Redis. Redis provides a wide range of commands for more advanced data structures and operations, such as sorted sets, hyperloglogs, and more. Remember to have a running Redis server on “localhost” (or update the host as needed) before executing these examples. The output should match the provided examples based on the Redis operations performed.



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads