Şu satırı dahil ederiz
import redis.clients.jedis.Jedis;
constructor - host + port
Daha sonra auth() metodunu çağırmak gerekir
Örnek
Şöyle yaparız
Jedis jedis = new Jedis(host, port);jedis.auth(password);
flushAll metodu
Tüm Redis önbelliğini temizler.
Örnek
Şöyle yaparız
public void clearAll() {Jedis jedis = null;try {jedis = acquireJedisInstance();jedis.flushAll();} catch (Exception e) {logger.error("Error occured while flushing all data from the cache ", e.getMessage());releaseJedisInstance(jedis);throw new RuntimeException(e);} finally {releaseJedisInstance(jedis);}}
Key olarak string, value olarak string kullanılır.
get() ve set() kullanılır
get metodu
Örnek
Şöyle yaparız
Jedis jedis = new Jedis(host, port);jedis.auth(password);jedis.set("welcome", "world");String value = jedis.get("welcome");
Örnek
Şöyle yaparız
public Employee retrieveEmployee(String employeeId) {Jedis jedis = null;try {jedis = acquireJedisInstance();String employeeJson = jedis.get(employeeId);if (StringUtils.hasText(employeeJson)) {return gson.fromJson(employeeJson, Employee.class);}} catch (Exception e) {logger.error("Error occured while retrieving data from the cache ", e.getMessage());releaseJedisInstance(jedis);throw new RuntimeException(e);} finally {releaseJedisInstance(jedis);}return null;}
keys metodu
Örnek
Şöyle yaparız
Set<String> keys = jedis.keys("test:sites:info:*");
set metodu
Kullanımı şöyle
jedis.set("key", "value");
Örnek
Şöyle yaparız. Burada nesneye TTL değeri de veriliyor.
//TTL(Time to live) of session data in seconds@Value("${redis.sessiondata.ttl}")private int sessiondataTTL;public Employee storeEmployee(String employeeId, Employee employee) {Jedis jedis = null;try {jedis = acquireJedisInstance();String json = gson.toJson(employee);jedis.set(employeeId, json);jedis.expire(employeeId, sessiondataTTL);} catch (Exception e) {logger.error("Error occured while storing data to the cache ", e.getMessage());releaseJedisInstance(jedis);throw new RuntimeException(e);} finally {releaseJedisInstance(jedis);}return employee;}
setnx metodu
setnx metodu yazısına taşıdım
2. List Veri Yapısı
Key olarak string, liste elemanları olarak string kullanılır. Listedeki key değeri bilenen bir nesneye yine get() metodu ile erişebiliriz.
lpush(), rpop() kullanılır.
del metodu - String
Örnek
Şöyle yaparız
Jedis jedis = ...;String keyPattern = ...;Set<String> keysToDelete = jedis.keys(keyPattern);for (String key : keysToDelete) {jedis.del(key);}
del metodu - Array<String>
Belirtilen key'leri siler
Örnek
Şöyle yaparız. Burada employeeId listesindeki tüm key'ler alınıyor
public void flushEmployeeCache(String employeeId) {Jedis jedis = null;try {jedis = acquireJedisInstance();List<String> keys = jedis.lrange(employeeId, 0, -1);if (!CollectionUtils.isEmpty(keys)) {// add the list key in as wellkeys.add(employeeId);// delete the keys and listjedis.del(keys.toArray(new String[keys.size()]));}} catch (Exception e) {logger.error("Error while flushing specific data from the cache ", e.getMessage());releaseJedisInstance(jedis);throw new RuntimeException(e);} finally {releaseJedisInstance(jedis);}}
lrange metodu
balls listesine "cricket_160","football_450","volleyball_270" eklenebilir.
Örnek
Şöyle yaparız. Burada balls listesindeki ilk 2 eleman alınıyor.
String key = "balls";long start = 0;long stop = 2;List<String> list = jedis.lrange(key, start, stop);
3. Set Veri Yapısı
Key olarak string, set elemanları olarak string kullanılır
sadd() smembers(),sismember() kullanılır
4. HashVeri Yapısı
İsmi olan bir nesne ve nesneye ait property'ler gibi düşünülür. Key olarak string, Nesne Property/Value olarak string kullanılır
hset(), hget(), hgetAll() kullanılır
Örnek - hgetAll()
Şöyle yaparız
String key = ...;Map<String, String> fields = jedis.hgetAll(key);
5. Sorted Set Veri Yapısı
Map olarak <String,Double> gibi bir şey kullanılır.
put(), zrevrange(), zrevrank() kullanılır
6. Stream
Örnek - Processor
Şöyle yaparız
Jedis conn = ...; String consumerName = ...; String streamName = ...; List<Entry<String, List<StreamEntry>>> results = conn.xreadGroup( consumerGroupName, consumerName, 500, 15000, false, Map.entry(streamName, StreamEntryID.UNRECEIVED_ENTRY));
Sonra şöyle yaparız
for (Entry<String, List<StreamEntry>> result : results) { List<StreamEntry> entries = result.getValue(); for (StreamEntry entry : entries) { String tweetid = entry.getFields().get("id"); String hashName = "tweet:" + tweetid; try { // simulate random failure/anomaly. ~ 20% will NOT be processed and ACKed. this // will cause these entries to added to pending-entry-list (obtained via XPENDING) if (!(random.nextInt(5) == 0)) { conn.hset(hashName, entry.getFields()); System.out.println("saved tweet to hash " + hashName); conn.xack(streamName, consumerGroupName, entry.getID()); } else { System.out.println("not processed - " + hashName); } } catch (Exception e) { ... } } }
Transactions
Örnek ver
Pipelining
Örnek
Şöyle yaparız
Pipeline pipeline = jedis.pipelined(); pipeline.set("key1", "value1"); pipeline.set("key2", "value2"); pipeline.sync();
Publish/Subscribe
Örnek ver
Hiç yorum yok:
Yorum Gönder