Redis dengan Spring Boot

Nov 28 2022
pengantar
Dalam posting ini kita akan membahas Redis, Redis adalah basis data NoSQL berbasis Key-value yang dapat digunakan untuk berbagai keperluan. Ini adalah open source dan merupakan penyimpanan struktur data InMemory.
Foto oleh josh Glauser di Unsplash

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

  1. Redis dapat digunakan sebagai basis data NoSQL berbasis nilai kunci.
  2. Redis dapat digunakan sebagai penyedia cache.
  3. Redis dapat digunakan sebagai penerbit dan pelanggan, yang digunakan dalam pemrosesan acara.
  4. Redis dapat digunakan sebagai toko sesi.
  5. 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.

  1. Instal homebrew di sistem Anda jika tidak ada.
  2. Jalankan di bawah perintah secara berurutan
  3. 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!!