open-match的redis数据
(金庆的专栏 2018.9)
open-match 是Google的开源游戏匹配服框架。
https://github.com/GoogleCloudPlatform/open-match
匹配中所用到的玩家数据会保存在 redis 中。查看
`open-match\internal\statestorage\redis\playerq\playerq.go`
可以了解redis保存的数据。
redis中有以下键值。
playerID
玩家ID形如:`bfd09c94d646493f834a4abe83a5a68c`, 类型为 hash. 有以下字段:
playerID.properties
保存玩家数据的json串。如:
{
"char.paladin": 1538102377,
"map.eastworld": 1538102377,
"mmr.rating": 1740,
"mode.ctf": 1538102377,
"timestamp.enter": 1538102377
}
玩家数据的每项值都要求为整数.
indices
set 类型,保存所有玩家数据键。如:
127.0.0.1:6379> smembers indices
1) "timestamp.enter"
2) "map.eastworld"
3) "mmr.rating"
4) "mode.ctf"
5) "char.paladin"
好像没用到。
玩家数据键
如 `timestamp.enter`, 类型为 zset.
每个玩家数据键都建立了一个排序集,按该玩家数据值排序,成员为 playerID。
例如:
127.0.0.1:6379> zrange mmr.rating 1 3 WITHSCORES
1) "ef3736ef2f7941f1a159f279703d5f58"
2) "746"
3) "17ca3bf3a2134c2c90cbe48ebc29f9cb"
4) "891"
5) "b6450b311f3f413595e824897015c462"
6) "891"