千家信息网

redis怎么生成树型

发表于:2025-02-06 作者:千家信息网编辑
千家信息网最后更新 2025年02月06日,这篇文章主要介绍了redis怎么生成树型的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇redis怎么生成树型文章都会有所收获,下面我们一起来看看吧。一般为了方便管理 re
千家信息网最后更新 2025年02月06日redis怎么生成树型

这篇文章主要介绍了redis怎么生成树型的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇redis怎么生成树型文章都会有所收获,下面我们一起来看看吧。

一般为了方便管理 redis 缓存,我们通过 : 来分隔不同的 key 来进行存储缓存,这样方便查看。

例如:

game:upload_role:1000game:member_info:2000game: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) {                        $pre_key = implode(':', array_slice($arr, 0, $ix));                        $pid = $index_tree[$pre_key];                    }                     $result[] = [                        'id' => $index_tree[$cur_key],                        'pid' => $pid,                        'name' => $arr[$ix],                        'key' => $cur_key,                    ];                }            }        }    }    return $result;}

然后生成树型的函数如下:

function genTree($items, $id = 'id', $pid = 'pid', $son = 'child'){    $tree = array();    $tmpMap = array();     foreach ($items as $item) {        $tmpMap[$item[$id]] = $item;    }     foreach ($items as $item) {        if (isset($tmpMap[$item[$pid]])) {            $tmpMap[$item[$pid]][$son][] = &$tmpMap[$item[$id]];        } else {            $tree[] = &$tmpMap[$item[$id]];        }    }    unset($tmpMap);    return $tree;}

使用如下:

$keys = [    'game:upload_role:1000',    'game:member_info:2000',    'game:member_info:state_info:3000',]; //索引$index = 1;//索引树$index_tree = []; //注意,如果想多次调用relationCache,并共享索引,请通过外部传参的方式$result = relationCache($keys, $index, $index_tree); $result = genTree($result, 'id', 'pid', 'children'); echo '
';print_r($result);

这样生成的结果,通过json_encode就可以使用 zTree 来显示了。

关于"redis怎么生成树型"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"redis怎么生成树型"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

生成 知识 索引 内容 篇文章 缓存 不同 上下 代码 价值 函数 分隔符 可以通过 命令 层次 操作简单 文章 方式 易懂 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 4台服务器做安全资源池集群 宁夏哪些单位招软件开发人员 鹰潭网络安全 管家婆升级数据库 行情报价软件开发 东莞个性化软件开发热线 数据库 存储二进制格式化 上海活动网络安全知识竞赛 数据库应该谁设计 上海长亭科技网络安全工程师 最终幻想14登录失去服务器 东莞汇电互联网科技 火车数据库 怎么在txt中追加数据库 普陀区市场网络技术服务哪家好 数据库查函数 网络安全标准化之父 建设银行互联网金融科技有限公司 网络安全演讲稿2分钟 日本没有网络安全信息法 网络安全专业需要编写程序吗 8k纸青少年网络安全手抄报图片 服务器事件查看日志 应用软件开发收费价目表 网络安全各协议使用的密钥机制 数据库王珊第4版 ppt 大连市网信办网络安全检查 网络安全分析五官扁平 加强网络安全信息统筹建设 数据库原理名词解释规范化
0