Redis dengan Spring Boot
Dalam posting ini kita akan membahas Redis , Redis adalah basis data NoSQL berbasis nilai kunci yang dapat digunakan untuk berbagai keperluan. Ini adalah open source dan merupakan penyimpanan struktur data InMemory. Karena Redis mendukung semua struktur data dasar seperti daftar, kumpulan, peta, dan kumpulan yang diurutkan.
Dengan menggunakan Redis, kami dapat mengembangkan berbagai jenis aplikasi seperti aplikasi obrolan, aplikasi penyimpanan sesi, dasbor game, dll.
Jika Anda ingin mempelajari Redis maka pertama-tama pahami tentang berbagai struktur data yang didukung Redis selain dari perintah yang digunakan untuk menyimpan dan mendapatkan data dari Redis.
Beberapa Perintah Penting
Redis mendukung String, Set, Sorted Set, List, dan HashMap sebagai kunci — nilai. Di bawah ini adalah beberapa perintah dasar untuk mendapatkan pemahaman tentang struktur data yang berbeda.
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
Gunakan Kasus Redis
- Redis dapat digunakan sebagai basis data NoSQL berbasis nilai kunci.
- Redis dapat digunakan sebagai penyedia cache.
- Redis dapat digunakan sebagai penerbit dan pelanggan, yang digunakan dalam pemrosesan acara.
- Redis dapat digunakan sebagai toko sesi.
- Redis dapat digunakan dalam aplikasi obrolan.
Jadi, jika Anda tertarik setelah membaca ini dan sekarang Anda ingin melakukan praktik langsung di Redis, siapkan server Redis di sistem Anda.
- Instal homebrew di sistem Anda jika tidak ada.
- Jalankan di bawah perintah secara berurutan
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
Jadi setelah ini, jika Anda ingin menggunakan Redis dari sistem lain maka Anda memerlukan klien yang akan berinteraksi dengan server Redis.
Sekarang di bagian ini, kita akan melihat bagaimana kita bisa menggunakan Redis dengan spring boot dan menggunakannya sebagai NoSQL DB.
Mempersiapkan
Langkah pertama adalah membuat contoh proyek boot Spring dari spring initializer dan menambahkan dependensi spring-boot-starter-data-redis .
Sekarang setelah mengimpor proyek ke IDE favorit Anda, buat paket dan kelas.
Kelas pertama adalah untuk konfigurasi, Kami memiliki dua driver untuk Redis satu adalah Jedis, yang lain adalah selada (Ini diinisialisasi dengan malas, dan dari segi kinerja juga lebih baik.)
Selain driver, kami memerlukan templat untuk melakukan operasi di server Redis, dengan cara yang sama kami memiliki RestTemplate untuk melakukan operasi istirahat.
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;
// }
}
Buat kelas Entitas
@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> {
}
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();
}
}
Jadi ini adalah contoh sederhana menggunakan Redis sebagai DB dengan aplikasi spring boot.
Pada postingan selanjutnya, kita akan melihat bagaimana menggunakan Redis sebagai Penyedia cache.
Terima kasih sudah membaca!!