Redis Integration in Java Using Redisson
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.ymlMə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/dataBunları 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 edinList
//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-cliredisson.yml faylinda password təyin etmisizinsə daxil edin.
AUTH yourpasswordbazada 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` //hashmə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
INFOserverdən çıxmaq
exit





