栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Spring Redis排序键

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Redis排序键

该代码位于文章的最后,如果您熟悉redis中的多hset键排序的原理,请跳过以下内容并直接阅读代码。

Redis Sort旨在对List / Set /
Zset中的字段进行排序,但是该方法可用于根据所需的指定指标对多键进行排序。我们可以使用“
sort”按指定字段对多个hset键进行排序,但是关于hset键的模式存在一些限制。
例如,如果hset键的模式为“ hash {i}”(i为整数),则在这种情况下我们可以对其进行排序。


127.0.0.1:6379> keys hash*1) "hash3"2) "hash2"3) "hash1"

看一下hash1的内容:

127.0.0.1:6379> hgetall hash11) "id"2) "24"3) "name"4) "kobe"

每个哈希键包含两个字段:“ id”,“ name”。如果我们要按ID对这些hset键进行排序。我们应该做什么 ?

首先,添加一个名为“ myset”的设置键。“ myset”是包含成员{“ 1”,“ 2”,“ 3”}的设置键。

127.0.0.1:6379> smembers myset1) "1"2) "2"3) "3"

然后运行以下命令:

127.0.0.1:6379> SORT myset BY hash*->id GET hash*->id GET hash*->name1) "3"2) "wade"3) "24"4) "kobe"5) "30"6) "curry"

尤里卡(Eureka),按ID对哈希{1-3}进行排序。
这是使用Spring Redis完成这项工作的代码:

public static String getRandomStr() {    return String.valueOf(new Random().nextInt(100));}public static void redisTemplateSort(RedisTemplate redisTemplate) {    String sortKey = "sortKey";    StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();    redisTemplate.setKeySerializer(stringRedisSerializer);    redisTemplate.setValueSerializer(stringRedisSerializer);    redisTemplate.setHashKeySerializer(stringRedisSerializer);    redisTemplate.setHashValueSerializer(stringRedisSerializer);    redisTemplate.delete(sortKey);    if (!redisTemplate.hasKey(sortKey)) {        for (int i = 0; i < 10; i++) { redisTemplate.boundSetOps(sortKey).add(String.valueOf(i)); String hashKey = "hash" + i,         strId = String.valueOf(i),         strName = getRandomStr(),         strSite = getRandomStr(); redisTemplate.boundHashOps(hashKey).put("_id", strId); redisTemplate.boundHashOps(hashKey).put("Name", strName); redisTemplate.boundHashOps(hashKey).put("Site", strSite); System.out.printf("%s : {"_id": %s, "Name": %s, "Site", %s}n",         hashKey, strId, strName, strSite);        }    }    SortQuery<String> sortQuery = SortQueryBuilder.sort(sortKey).by("hash*->Name") .get("hash*->_id").get("hash*->Name").get("hash*->Site").build();    List<String> sortRslt = redisTemplate.sort(sortQuery);    for (int i = 0; i < sortRslt.size(); ) {        System.out.printf("{"_id": %s, "Name": %s, "Site", %s}n", sortRslt.get(i+2), sortRslt.get(i+1), sortRslt.get(i));        i += 3;    }}

运行结果

redisTemplateSort(redisTemplate)
(按代码中的名称排序):

hash0 : {"_id": 0, "Name": 59, "Site", 60}hash1 : {"_id": 1, "Name": 37, "Site", 57}hash2 : {"_id": 2, "Name": 6, "Site", 40}hash3 : {"_id": 3, "Name": 91, "Site", 58}hash4 : {"_id": 4, "Name": 39, "Site", 32}hash5 : {"_id": 5, "Name": 27, "Site", 82}hash6 : {"_id": 6, "Name": 43, "Site", 10}hash7 : {"_id": 7, "Name": 17, "Site", 55}hash8 : {"_id": 8, "Name": 14, "Site", 91}hash9 : {"_id": 9, "Name": 39, "Site", 91}{"_id": 40, "Name": 6, "Site", 2}{"_id": 91, "Name": 14, "Site", 8}{"_id": 55, "Name": 17, "Site", 7}{"_id": 82, "Name": 27, "Site", 5}{"_id": 57, "Name": 37, "Site", 1}{"_id": 32, "Name": 39, "Site", 4}{"_id": 91, "Name": 39, "Site", 9}{"_id": 10, "Name": 43, "Site", 6}{"_id": 60, "Name": 59, "Site", 0}{"_id": 58, "Name": 91, "Site", 3}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/371227.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号