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"