Статьи

Начало работы с джедаями

Привет, в эти дни я начал изучать Redis. Я много слышал об этом, поэтому я решил попробовать.

Redis определяется на своих веб-сайтах как « открытое, расширенное хранилище ключей-значений». Его часто называют сервером структуры данных, поскольку ключи могут содержать строки, хэши, списки, наборы и отсортированные наборы ».

Мы можем найти очень хорошие примеры того, где Redis хорошо вписывается в блог Shades of Grey . В этом посте мы не будем фокусироваться на функциях и возможностях Redis, мы кратко рассмотрим Jedis, Java Redis Client. Команды Redis очень просты в освоении, Jedis API, также очень просты в освоении.

Мы можем загрузить Jedis в репозиторий github ( https://github.com/xetorthio/jedis ). Это простая банка, которую мы можем просто добавить в наше приложение и начать использовать.

Ниже мы можем увидеть простой пример API джедаев:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
import redis.clients.jedis.Jedis;
public class TestJedis {
 
public static void main(String[] args) {
  //Connecting to Redis on localhost
  Jedis jedis = new Jedis("localhost");
  //adding a new key
  jedis.set("key", "value");
  //getting the key value
  System.out.println(jedis.get("key"));
 
 }
 
}

В приведенном выше примере мы создаем соединение с сервером Redis, после подключения мы добавляем новый ключ в хранилище данных, используя набор методов, этот метод вызовет команду SET в Redis. После этого мы создали новый ключ под названием «ключ» со значением «значение». Как только у нас есть значение для этого ключа, мы можем получить его значение, используя метод get, который вызывает команду GET в Redis.

Очень полезная команда — INCR, которая увеличивает значение ключа. Мы можем увидеть пример использования этой команды ниже:

01
02
03
04
05
06
07
08
09
10
11
import redis.clients.jedis.Jedis;
public class IncrTest {
 
public static void main(String[] args) {
 Jedis jedis = new Jedis("localhost");
 System.out.println(jedis.get("counter"));
 jedis.incr("counter");
 System.out.println(jedis.get("counter"));
 }
 
}

Одним из хороших вариантов использования Redis является кэширование. Мы можем использовать его как систему кеширования, это очень хорошо для этого, потому что мы можем установить срок действия для данного ключа через запятую EXPIRE. Также мы можем получить TTL для ключа, используя команду TTL . Ниже мы можем увидеть пример с Jedis api.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import redis.clients.jedis.Jedis;
public class TestJedis {
 
public static void main(String[] args) throws InterruptedException {
 String cacheKey = "cachekey";
 Jedis jedis = new Jedis("localhost");
 //adding a new key
 jedis.set(cacheKey, "cached value");
 //setting the TTL in seconds
 jedis.expire(cacheKey, 15);
 //Getting the remaining ttl
 System.out.println("TTL:" + jedis.ttl(cacheKey));
 Thread.sleep(1000);
 System.out.println("TTL:" + jedis.ttl(cacheKey));
 //Getting the cache value
 System.out.println("Cached Value:" + jedis.get(cacheKey));
 
 //Wait for the TTL finishs
 Thread.sleep(15000);
 
 //trying to get the expired key
 System.out.println("Expired Key:" + jedis.get(cacheKey));
 }
 
}

Также redis может хранить некоторые другие значения, такие как Lists, Hashs, set и другие. Ниже мы можем увидеть пример использования Sets в Redis.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
import redis.clients.jedis.Jedis;
public class TestJedis {
 
public static void main(String[] args) {
 String cacheKey = "languages";
 Jedis jedis = new Jedis("localhost");
 //Adding a set as value
 jedis.sadd(cacheKey,"Java","C#","Python");//SADD
 
 //Getting all values in the set: SMEMBERS
 System.out.println("Languages: " + jedis.smembers(cacheKey));
 //Adding new values
 jedis.sadd(cacheKey,"Java","Ruby");
 //Getting the values... it doesn't allow duplicates
 System.out.println("Languages: " + jedis.smembers(cacheKey));
 
 }
 
}

Существует много других вариантов использования Redis, этот пост был призван дать небольшое введение в библиотеку Jedis. Увидимся в следующем посте!

Ссылка: Начало работы с Jedis от нашего партнера JCG Франсиско Рибейру Младшего в блоге XICO JUNIOR’S WEBLOG .