Привет, в эти дни я начал изучать 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. Увидимся в следующем посте!