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来保留插入顺序 - 但是,在查看数据库时,它仍然会弄乱订单。
有没有人知道如何在不搞乱订单的情况下将其插入数据库?
谢谢。
答案 0 :(得分:4)
使用临时HashMap的基于字符串的Jedis客户端transcodes the strings,因此它会终止您的订单。 BinaryClient iterates over the Map直接保留订单。
lettuce客户端在任何情况下都会保留地图的顺序。
或者,使用HSET hash key value
HTH,马克
答案 1 :(得分:0)
尝试基于Redis的Java框架 - Redisson。它使用任何编解码器(Jackson JSON
,Avro
,Smile
,CBOR
,MsgPack
,Kryo
,{在迭代期间按插入顺序保留地图条目{1}},FST
,LZ4
和Snappy
)。