Sitemap

Redis Integration in Java Using Redisson

3 min readSep 11, 2024

--

Press enter or click to view image in full size

Müasir proqram inkişafında, səmərəli məlumat keşləmə və real vaxt performansı yüksək səviyyədə miqyaslana bilən və sürətli tətbiqlər qurmaq üçün vacibdir. Redis(RE mote DI ctionary S erver), açıq mənbə kodlu yaddaşdaxili məlumat strukturu bazası olaraq, keşləmə həlli, mesaj ötürücüsü və müxtəlif istifadələr üçün məlumat saxlama vasitəsi kimi geniş istifadə olunur.Redis 2009-cu ildə Salvatore Sanfilippo tərəfindən yaradılıb və o vaxtdan bəri yüksək performanslı keşləmə və məlumat saxlama həlli kimi geniş istifadə olunmağa başlayıb. C dilində yazılıb və məlumatları key-value şəklində saxlayan bir NoSQL verilənlər bazasıdır.Redis məlumatları(data structures) daxili yaddaşda(in memory) saxlayır, bu da misilsiz sürət, etibarlılıq və performans təmin edir.

Gəlin indi biz Redisin Javada(Spring Boot) konfiqurasiyasına və istifadəsinə baxaq. İlk öncə Redisson haqqında məlumat verim- Redisson, Redis ilə işləmək üçün Java tətbiqlərində istifadə edilən bir Java client kitabxanasıdır.Redisson Redis-in data strukturlarını (hash, list, set, sorted set və s.) daha sadə və obyekt yönümlü üsullarla idarə etməyə imkan verir.redisson.yml faylı Redisson-un düzgün işləməsi üçün lazımi parametrləri təmin edir. Və build tool olaraqda maven istifadə edəcəm.

pom.xml

<!-- Redis -->
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.23.4</version>
</dependency>

redisson.yml

singleServerConfig:
idleConnectionTimeout: 10000
connectTimeout: 10000
timeout: 3000
retryAttempts: 3
retryInterval: 1500
password: yourpassword
subscriptionsPerConnection: 5
clientName: redis
address: "redis://127.0.0.1:6379"

application.yml

spring:
redis:
redisson:
file: classpath:redisson.yml

Mən Redisi öz serverimə Docker istifadə ederək quraşdıracam. Siz Redis-in Windows versiyasını buradan yükləyə bilərsiniz.

Get Talib Aliyev’s stories in your inbox

Join Medium for free to get updates from this writer.

docker-compose.yml

services: 
redis:
container_name: redis-server
image: 'bitnami/redis:latest'
restart: always
environment:
- REDIS_PASSWORD=yourpassword
ports:
- '6379:6379'
volumes:
- ../../docker-volumes/redis:/bitnami/redis/data

Bunları etdikdən sonra artıq Java mühitində Redis istifadə edə bilərik. İlk olaraq RedisService(istəyə görə ad) classımızı yaradaq.

@Service
@RequiredArgsConstructor
public class RedisService {

private final RedissonClient redissonClient;

RedissonClient Redisson kitabxanasının əsas interfeysidir və Redis ilə Java tətbiqləri arasında əlaqəni idarə edir.

İndi isə biz RedisService-də müxtəlif növ data tiplərin Javada RedissonClient vasitəsilə Redis data bazasına yazılmasına və oxunmasına baxaq.

String

//write
public void set(String key, String value) {
RBucket<String> stringBucket = redissonClient.getBucket(key);
stringBucket.set(value);
}

//mueyyen muddet erzinde melumatin redisde saxlanilmasi ucun duration istifade edin
public void set(String key, String value, Long milliSeconds) {
RBucket<String> stringBucket = redissonClient.getBucket(key);
stringBucket.set(value, Duration.of(milliSeconds, ChronoUnit.MILLIS)); //TTL
}

//read
public String get(String key) {
RBucket<String> key = redissonClient.getBucket(key);
return key.get();
}
//Bir-balaca qeyd : melumatlar key-value kimi saxlanilir deye
// key-in tekrarlanmamasina diqqet edin

List

//write
public void set(String key, String value) {
RList<String> listBucket = redissonClient.getList(key);
listBucket.add(value);
}
//read
public List<String> getList(String key) {
RList<String> listBucket = redissonClient.getList(key);
return listBucket.readAll(); // listBucket.toArray() kimide oxuya bilersiz
}
//listdeki valuein indexin verirsiz hemin indexdeki melumati qaytarir
public String getListElementAt(String key, int index) {
RList<String> listBucket = redissonClient.getList(key);
return listBucket.get(index);
}

Hash

//write
public void put(String hashKey, String field, String value) {
RMap<String, String> hashMap = redissonClient.getMap(hashKey);
hashMap.put(field, value);
}
//read
//butun key-value oxunur
public Map<String, String> getAll(String hashKey) {
RMap<String, String> hashMap = redissonClient.getMap(hashKey);
return hashMap.readAllMap();
}
//verilen keye gore deyer oxunur
public String get(String hashKey, String field) {
RMap<String, String> hashMap = redissonClient.getMap(hashKey);
return hashMap.get(field);
}
//bu hisse cetin gele biler ama dusununki redis bir hashmapdir ve valuesindede
//hashmap saxlanilir.(ic-ice hashmap)

Son olaraq Docker konteynerində redis-cli istifadə edərək Redis serverinə qoşulmaq və bəzi vacib əmrlərə baxaq.

docker exec -it <container-name> redis-cli

redisson.yml faylinda password təyin etmisizinsə daxil edin.

AUTH yourpassword

bazada olan bütün açarlara baxmaq

KEYS *

açarların tiplərinə baxmaq

TYPE `key`

açarların dəyərinə baxmaq (key-value)

LRANGE `key` 0 -1 //list
GET `key` //string
HGETALL `key` //hash

məlumatları(açarları) silmək

FLUSHALL //butun acarlar silinir
DEL `key` // qeyd olunan acar silinir

redis-cli KEYS "pattern*" | xargs redis-cli DEL
//wildcard usulu:
//bir nece acarin icerisinde olan eyni deyerlileri silmek
// (pattern hemin deyeri gosterir)

redis serverinin vəziyyətinə və konfiqurasiyasına baxmaq

INFO

serverdən çıxmaq

exit

--

--