Введение

В этом посте мы обсудим Redis. Redis — это база данных NoSQL на основе ключей и значений, которую можно использовать для различных целей. Это открытый исходный код, и это хранилище структуры данных InMemory. Потому что Redis поддерживает все основные структуры данных, такие как список, набор, карта и отсортированный набор.

Используя Redis, мы можем разрабатывать различные типы приложений, такие как приложения для чата, приложения для хранения сеансов, игровые панели и т. д.

Если вы хотите изучить Redis, сначала узнайте о различных структурах данных, которые Redis поддерживает, кроме команд, с помощью которых мы можем хранить и получать данные из Redis.

Некоторые важные команды

Redis поддерживает String, Set, Sorted Set, List и HashMap в качестве ключ-значение. Ниже приведены некоторые основные команды для понимания различных структур данных.

String 
SET foo bar (foo is key, bar is value)
GET foo
bar
HashMap

HMSET student name: "shubham" age: 25
HGETALL student
List
LPUSH product car
LPUSH product bike

LRANGE product 0 10
Set
SADD product car
SADD product bike

SMEMBERS product

Помимо этого, Redis имеет множество других функций, таких как HyperLogLog и Transactions.

Варианты использования Redis

  1. Redis можно использовать в качестве базы данных NoSQL на основе ключей и значений.
  2. Redis можно использовать в качестве поставщика кеша.
  3. Redis можно использовать в качестве издателя и подписчика, который используется при обработке событий.
  4. Redis можно использовать как хранилище сеансов.
  5. Redis можно использовать в чат-приложениях.

Настройте Redis на MacOS

Так что, если после прочтения это вас заинтересовало, и теперь вы хотите попрактиковаться в Redis, настройте сервер Redis в своей системе.

  1. Установите homebrew в вашей системе, если ее там нет.
  2. Команды «Выполнить ниже» последовательно
brew install redis

After succesfull installation 

brew services start redis

After starting redis if you want to try above commands

redis-cli

To test whether redis server is working

PING

If yu get PONG then its connected

If you want to monitor which all commands are getting executed on redis

redis-monitor

Настроить Redis в Windows

Программу напрямую устанавливать не нужно, просто скачайте проект git hub и запустите пакетный файл из папки bin.

Поэтому после этого, если вы хотите использовать Redis из какой-либо другой системы, вам понадобится клиент, который будет взаимодействовать с сервером Redis.

Теперь в этой части мы увидим, как мы можем использовать Redis с весенней загрузкой и использовать его в качестве базы данных NoSQL.

Настраивать

Первый шаг — создать пример проекта загрузки Spring из Spring Initializer и добавить spring-boot-starter-data-redisdependency.

Теперь, после импорта проекта в вашу любимую IDE, создайте пакеты и классы.

Первый класс будет для конфигурации. У нас есть два драйвера для Redis, один — Jedis, другой — салат (он лениво инициализируется, и с точки зрения производительности он также лучше).

Помимо драйвера, нам нужен шаблон для выполнения операций на сервере Redis, аналогично тому, как у нас есть RestTemplate для выполнения остальных операций.

package com.redisexample.redisdemo.config;

import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.repository.configuration.EnableRedisRepositories;
import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration
//@EnableRedisRepositories
public class AppConfig {

    //There are two ways of creating driver, one is jedis another is lettuce,
    //lettuce is bit lazy in intialization so it creates beans  lazily
//It is using default host and port
    @Bean
    RedisConnectionFactory jedisConnectionFactory() {
        return new LettuceConnectionFactory();
    }

    @Bean
    public RedisTemplate<String, Object> redisTemplate() {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(jedisConnectionFactory());
        template.setKeySerializer(new StringRedisSerializer());
        template.setHashKeySerializer(new StringRedisSerializer());
        template.setHashKeySerializer(new JdkSerializationRedisSerializer());
        template.setValueSerializer(new JdkSerializationRedisSerializer());
        template.setEnableTransactionSupport(true);
        template.afterPropertiesSet();
        return template;
    }

    //For setting host and port
//    @Bean
//    JedisConnectionFactory jedisConnectionFactory() {
//        JedisConnectionFactory jedisConFactory
//                = new JedisConnectionFactory();
//        jedisConFactory.setHostName("localhost");
//        jedisConFactory.setPort(6379);
//        return jedisConFactory;
//    }

}

Приведенный выше класс подготовит наше приложение к подключению к серверу Redis. Теперь все просто: мы можем использовать базовые классы объектов, репозиториев, служб и контроллеров для выполнения операций CRUD в Redis.

Создайте класс Entity

@RedisHash("student") // this is a set so we can use set command to see data via redis cli
public class Student {

    public enum Gender {
        MALE, FEMALE
    }

    private Long id;
    private String name;
    private int age;
    private String city;

    //getters and setters
}

Создать интерфейс репозитория

@Repository
public interface StudnetRepo extends CrudRepository<Student, Long> {

}

Теперь создайте класс обслуживания, а затем контроллер для создания API.

package com.redisexample.redisdemo.controller;

import com.redisexample.redisdemo.model.Student;
import com.redisexample.redisdemo.repo.StudnetRepo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/student")
public class StudentController {

    @Autowired
    private StudnetRepo studnetRepo;

    @PostMapping
    public void saveStudent(@RequestBody Student student){
        studnetRepo.save(student);
    }

    @GetMapping
    public Iterable<Student> getStudent(){
        return studnetRepo.findAll();
    }
}

Мы можем протестировать вышеуказанные конечные точки через Postman и можем отслеживать команды через Redis CLI (команда монитора).

Итак, это простой пример использования Redis в качестве БД с приложением Spring Boot.

В следующем посте мы увидим, как использовать Redis в качестве поставщика кеша.

Если вы ищете видео объяснение, вы можете посмотреть его здесь.

Спасибо за прочтение!!