В предыдущем посте мы начали изучать Jedis API Java Redis Client. В этом посте мы рассмотрим отсортированный набор (zsets).
Sorted Set работает как Set, так как не допускает дублирования значений. Большая разница в том, что в Sorted Set каждый элемент имеет оценку, чтобы сохранить элементы отсортированными.
Мы можем увидеть некоторые команды ниже:
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 java.util.HashMap; import java.util.Map; import redis.clients.jedis.Jedis; public class TestJedis { public static void main(String[] args) { String key = "mostUsedLanguages" ; Jedis jedis = new Jedis( "localhost" ); //Adding a value with score to the set jedis.zadd(key, 100 , "Java" ); //ZADD //We could add more than one value in one calling Map<Double, String> scoreMembers = new HashMap<Double, String>(); scoreMembers.put(90d, "Python" ); scoreMembers.put(80d, "Javascript" ); jedis.zadd(key, scoreMembers); //We could get the score for a member System.out.println( "Number of Java users:" + jedis.zscore(key, "Java" )); //We could get the number of elements on the set System.out.println( "Number of elements:" + jedis.zcard(key)); //ZCARD } } |
В приведенном выше примере мы видели несколько команд Zset. Чтобы добавить элементы в zet, мы устанавливаем метод zadd , различие для наборов состоит в том, что мы также передаем оценку за элемент. Есть перегруженная версия, в которую мы можем передать много значений, используя карту. Zadd может использоваться как для добавления, так и для обновления оценки для существующего элемента.
Мы можем получить оценку для данного элемента с помощью zscore и количества элементов, используя команду zcard .
Ниже мы видим другие команды из zsets:
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
26
27
28
|
import java.util.Set; import redis.clients.jedis.Jedis; import redis.clients.jedis.Tuple; public class TestJedis { public static void main(String[] args) { String key = "mostUsedLanguages" ; Jedis jedis = new Jedis( "localhost" ); //get all the elements sorted from bottom to top System.out.println(jedis.zrange(key, 0 , - 1 )); //get all the elements sorted from top to bottom System.out.println(jedis.zrevrange(key, 0 , - 1 )); //We could get the elements with the associated score Set<Tuple> elements = jedis.zrevrangeWithScores(key, 0 , - 1 ); for (Tuple tuple: elements){ System.out.println(tuple.getElement() + "-" + tuple.getScore()); } //We can increment a score for a element using ZINCRBY System.out.println( "Score before zincrby:" + jedis.zscore(key, "Python" )); //Incrementing the element score jedis.zincrby(key, 1 , "Python" ); System.out.println( "Score after zincrby:" + jedis.zscore(key, "Python" )); } } |
С помощью Zrange мы можем получить элементы для данного диапазона. Возвращает элементы, отсортированные снизу вверх. Мы можем получить элементы сверху вниз, используя метод zrevrrange . Redis также позволяет нам получить элементы с соответствующими баллами. В Redis мы передаем опцию «с баллами ». В Jedis API мы используем метод zrevrangeWithScores, который возвращает набор объектов Tuple. Другой полезной командой является команда, которая позволяет увеличить счет для члена в наборе.
Существуют и другие команды для zsets, этот пост был предназначен только для демонстрации базового использования с Jedis API. Мы можем найти хороший пример использования отсортированных наборов в этом посте .
Увидимся в следующем посте.