java - Jedis HMSET map 插入顺序

标签 java redis linkedhashmap jedis

Jedis 有一个 hmset 方法,允许您在特定键处设置字段及其值的映射。

我是这样使用这个方法的:

Map<String, String> map = new LinkedHashMap<String, String>();

                // General player data
                map.put("name", player.getName());
                map.put("ip", player.getAddress().getAddress().getHostAddress());
                map.put("rank", "none");
                map.put("tokens", "0");
                map.put("coins", "0");

                // Arsenal player statistics
                map.put("ar_score", "0");
                map.put("ar_gameswon", "0");
                map.put("ar_gameslost", "0");
                map.put("ar_kills", "0");
                map.put("ar_deaths", "0");

                pipeline.hmset("uuid:" + uuid, map);

                pipeline.sync();
                core.redis.getJedisPool().returnResourceObject(jedis);

我决定使用 LinkedHashMap 来保留插入顺序 - 然而,当查看数据库时,它仍然弄乱了顺序。

有谁知道如何将其插入数据库而不弄乱顺序?

谢谢。

最佳答案

基于字符串的 Jedis 客户端 transcodes the strings使用临时 HashMap,因此它会终止您的订单。 BinaryClient iterates over the Map直接并保留顺序。

lettuce无论如何,客户端都会保留您的 map 的顺序。

或者,使用 HSET 哈希键值 逐一设置值

马克·HTH

关于java - Jedis HMSET map 插入顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31767537/

相关文章:

redis - LPUSH 命令是否适用于从 JSON 初始化的记录?

java - 如何防止LinkedHashMap替换Key/Value?

java - 由于 ClassCastException 而 key 正确时无法在 Java 中打印 LinkedHasMap

java - Android 按住按钮几秒钟然后做一些事情

JAVA——抽象

spring-mvc - 将缓存 Redis 过期时间设置为 1 年

Java LinkedHashMap 获取第一个或最后一个条目

java - FacesContext.getCurrentInstance().getApplication().getMessageBundle() 返回哪个 messageBundle?

java - 找不到 c3p0 文件错误

redis - 将 MichaCo\CacheManager 与 Redis4You 和 RedisLab redis 服务器一起使用