Въведение
В тази публикация ще обсъдим 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 DB.
Настройвам
Първата стъпка е да създадете примерен проект за стартиране на Spring от spring initializer и да добавите spring-boot-starter-data-redisзависимост.
Сега, след като импортирате проекта в любимата си IDE, създайте пакети и класове.
Първият клас ще бъде за конфигуриране. Имаме два драйвера за Redis, единият е Jedis, а другият е martuce (Той е лениво инициализиран и по отношение на производителността също е по-добър.)
Освен драйвера, имаме нужда от шаблон за извършване на операции на 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 като DB с приложение за пролетно зареждане.
В следващата публикация ще видим как да използваме Redis като доставчик на кеш памет.
Ако търсите видео обяснение, можете да го гледате тук.
Благодаря за четенето!!