一般为了方便管理 redis 缓存,我们通过 : 来分隔不同的 key 来进行存储缓存,这样方便查看。 例如: game:upload_role:1000 game:member_info:2000 game:member_info:state_info:3000 上面的这种结构在 Redis Desktop Manager 中就会显示如下: 我们可以通过 keys 命令来获取 redis 里的所有 key。但这些 key 是没有层次的,如何生成? 只能通过 : 分隔符来处理各 key 的上下层关系。 代码如下: function relationCache($keys, &$index, &$index_tree) { $result = []; if ($keys) { foreach ($keys as $key) { $arr = explode(':', $key); $len = count($arr); for ($ix = 0; $ix < $len; $ix++) { $cur_key = implode(':', array_slice($arr, 0, $ix + 1)); if (!isset($index_tree[$cur_key])) { $index_tree[$cur_key] = $index++; $pid = 0; if ($ix >= 1)