微信商城网站建设视频,商城网站后续费用,wordpress 主题加速,芜湖做网站哪个公司好在本文中#xff0c;我们将讨论Redis SORT命令。 Redis提供了SORT命令#xff0c;我们可以使用该命令从LIST#xff0c;SET或ZSET中检索或存储排序的值。 我们可以使用最简单的形式在KEY上使用命令#xff0c;如下例所示#xff1a; SORT numbers_list这将对键中包含的… 在本文中我们将讨论Redis SORT命令。 Redis提供了SORT命令我们可以使用该命令从LISTSET或ZSET中检索或存储排序的值。 我们可以使用最简单的形式在KEY上使用命令如下例所示 SORT numbers_list 这将对键中包含的值进行排序并返回它们。 该命令将值排序为数字。 因此可以说我们有一个包含以下值的列表 1, 110, 5 上面的命令将返回 1 5 110 我们可以指定使用ALPHA修饰符按字母顺序对值进行排序。 有许多修饰符。 我们将在下面的示例中查看其中的一些。 这些示例将使用Jedis api。 对于我们的示例让我们考虑一下我们有一个想法管理系统。 我们有一个列表其中包含系统中的所有用户名 all:users [junior, francisco, ribeiro, user4] 对于每个用户名将有一个包含用户信息的哈希 user:user:junior- name: Junior User- num_ideas : 5- email:fjunioremail.comuser:francisco- name: Francisco User- num_ideas: 4- email: franciscoemail.com... 我们可以为我们的示例看到一个将填充redis的类 package br.com.xicojunior.redistest;import java.util.HashMap;
import java.util.Map;import redis.clients.jedis.Jedis;public class App
{public static Jedis jedis new Jedis(localhost); public static void main( String[] args ){String names[] new String[]{junior, francisco, ribeiro, user4};for(String name: names){jedis.lpush(all:users, name);}addUserHash(names[0], Junior User, juniorjunior.com, 5);addUserHash(names[1], Francisco User, franciscofrancisco.com, 4);addUserHash(names[2], Ribeiro User, ribeiroribeiro.com, 3);addUserHash(names[3], User 4, useruser.com, 2);for(String name: names){System.out.println(jedis.hgetAll(user:.concat(name)));}System.out.println(jedis.lrange(all:users, 0, -1));}public static void addUserHash(String username, String name, String email, String numberOfIdeas){MapString, String userProp new HashMapString, String();userProp.put(name,name);userProp.put(email, email);userProp.put(num_ideas, String.valueOf(numberOfIdeas));jedis.hmset(user:.concat(username), userProp);}
} 让我们看下面的代码示例 package br.com.xicojunior.redistest;import redis.clients.jedis.Jedis;
import redis.clients.jedis.SortingParams;public class SortTest {public static void main(String[] args) {Jedis jedis new Jedis(localhost);//[1]sorting the usernamesSystem.out.println(jedis.sort(all:users));//[ribeiro, francisco, junior, user4]//[2]sorting the username alpha//jedis sort method receives a SortingParams instance for modifiersSystem.out.println(jedis.sort(all:users, new SortingParams().alpha()));//[francisco, junior, ribeiro, user4]}} 在上面的示例中我们对键“ allusers ”进行了排序。 第一次尝试时它似乎没有正确排序因为默认排序考虑了数字。 在第二个示例中我们使用ALPHA修饰符。 我们可以通过使用重载版本的sort方法来做到这一点。 它接收SortingParams类的实例。 在这种情况下我们看到用户名已正确排序。 SORT命令的一个不错的功能是我们可以使用外部值其他键中的值对列表进行排序。 在下面的示例中我们将按用户给出的提示数对allusers键进行排序。 可以使用“ BY ”修饰符来完成该修饰符接收要使用的键的模式。 让我们看下面的例子 package br.com.xicojunior.redistest;import redis.clients.jedis.Jedis;
import redis.clients.jedis.SortingParams;public class SortTest {public static void main(String[] args) {Jedis jedis new Jedis(localhost);//[1] Sorting the usernames by the number of ideasSystem.out.println(jedis.sort(all:users, new SortingParams().by(user:*-num_ideas)));//[user4, ribeiro, francisco, junior]//[1] Sorting the usernames by the number of ideas DESCSystem.out.println(jedis.sort(all:users, new SortingParams().by(user:*-num_ideas).desc()));}} 在第二个示例中我们通过一个外部值对用户名进行排序在本例中我们通过字段“ num_ideas ”进行排序 。 在这种情况下我们使用哈希模式进行排序我们使用以下模式“ user*- num_ideas ”。 在这种模式下我们要寻找键“ user* ”其中“ *”将被列表中的值替换。 由于它是一个散列因此我们需要通知该字段因此我们使用模式“ - fieldname ”进行操作。 如果我们按字符串键进行排序则可以使用以下模式“ num_ideas_ * ”因为有一个键可以存储每个用户的想法数。 在第一次调用它检索排序ASC他们的价值观我们也可以告诉Redis的对它进行排序DESC使用DESC修改。 jedis BY和DESC是SortingParams中的方法。 当所有方法都返回实例时我们可以链接所有调用这使代码读取更容易。 使用SORT命令我们还可以从外部键或来自外部哈希的字段中检索值。 我们可以使用GET修饰符执行此操作并且可以多次使用它。 让我们在下面看到此修饰符的一些示例 package br.com.xicojunior.redistest;import redis.clients.jedis.Jedis;
import redis.clients.jedis.SortingParams;public class SortTest {public static void main(String[] args) {Jedis jedis new Jedis(localhost);//[1] Sorting the usernames by the number of ideas and retrieving the user nameSystem.out.println(jedis.sort(all:users, new SortingParams().by(user:*-num_ideas).get(user:*-name)));//[User 4, Ribeiro User, Francisco User, Junior User]//[2] Retrieving the name and emailSystem.out.println(jedis.sort(all:users, new SortingParams().by(user:*-num_ideas).get(user:*-name,user:*-email)));//[User 4, useruser.com, Ribeiro User, ribeiroribeiro.com, Francisco User, franciscofrancisco.com, Junior User, juniorjunior.com]//[3] Retrieve the value of the key being sorted - Special pattern #System.out.println(jedis.sort(all:users, new SortingParams().by(user:*-num_ideas).get(user:*-name,user:*-email,#)));//[User 4, useruser.com, user4, Ribeiro User, ribeiroribeiro.com, ribeiro, Francisco User, franciscofrancisco.com, francisco, Junior User, juniorjunior.com, junior]}} 在上面的代码中我们可以看到GET修饰符的使用为了返回哈希字段我们可以使用一种类似于在BY修饰符中使用的模式。 如前所述在第一个示例中我们仅返回名称我们可以多次使用GET在第二个示例中我们从用户那里检索名称和电子邮件。 我们还可以检索使用特殊模式“”排序的键的值。 方法get接收一个变量因此我们可以传递要从中检索值的所有外部键。 我们可以做的另一件事是将排序结果存储在一个键中。 在需要缓存排序结果的情况下很有用我们可以为sort命令指定一个dest键。 结果将存储为LIST。 package br.com.xicojunior.redistest;import redis.clients.jedis.Jedis;
import redis.clients.jedis.SortingParams;public class SortTest {public static void main(String[] args) {Jedis jedis new Jedis(localhost);jedis.sort(all:users,dest_key1);System.out.println(jedis.lrange(dest_key1, 0, -1));//[ribeiro, francisco, junior, user4]jedis.sort(all:users, new SortingParams().alpha().desc(), dest_key2);System.out.println(jedis.lrange(dest_key2, 0, -1));//[user4, ribeiro, junior, francisco]}} SORT命令的一个非常有用的功能是我们只能将其用于从相关键中获取值。 有一个修饰符指示不对NOSORT进行排序 package br.com.xicojunior.redistest;import redis.clients.jedis.Jedis;
import redis.clients.jedis.SortingParams;public class SortTest {public static void main(String[] args) {Jedis jedis new Jedis(localhost);System.out.println(jedis.sort(all:users, new SortingParams().get(user:*-name,user:*-email).nosort()));//[User 4, useruser.com, Ribeiro User, ribeiroribeiro.com, Francisco User, franciscofrancisco.com, Junior User, juniorjunior.com]}} 这段代码基本上为所有用户检索名称和电子邮件。 如果我们不使用SORT命令则至少需要两个命令来执行相同的操作 LRANGE all:users 0 -1 //TO get all usernames 然后为每个用户名分别调用hmget如下所示 HMGET user:junior name email //TO get the name and email from a user 我们可以在redis站点中找到命令文档。 参考在XICO JUNIORS WEBLOG博客中来自JCG合作伙伴 Francisco Ribeiro Junior的Jedis 与Redis进行了排序 。 翻译自: https://www.javacodegeeks.com/2014/02/redis-sort-with-jedis.html