Введение
В этом посте мы обсудим 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
- Redis можно использовать в качестве базы данных NoSQL на основе ключей и значений.
- Redis можно использовать в качестве поставщика кеша.
- Redis можно использовать в качестве издателя и подписчика, который используется при обработке событий.
- Redis можно использовать как хранилище сеансов.
- Redis можно использовать в чат-приложениях.
Настройте Redis на MacOS
Так что, если после прочтения это вас заинтересовало, и теперь вы хотите попрактиковаться в Redis, настройте сервер Redis в своей системе.
- Установите homebrew в вашей системе, если ее там нет.
- Команды «Выполнить ниже» последовательно
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 в качестве поставщика кеша.
Если вы ищете видео объяснение, вы можете посмотреть его здесь.
Спасибо за прочтение!!