91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

redis怎么生成樹型

發布時間:2022-01-15 15:45:32 來源:億速云 閱讀:155 作者:iii 欄目:大數據

這篇文章主要介紹了redis怎么生成樹型的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇redis怎么生成樹型文章都會有所收獲,下面我們一起來看看吧。

一般為了方便管理 redis 緩存,我們通過 : 來分隔不同的 key 來進行存儲緩存,這樣方便查看。

例如:

game:upload_role:1000
game:member_info:2000
game:member_info:state_info:3000

上面的這種結構在 Redis Desktop Manager 中就會顯示如下:

redis怎么生成樹型

我們可以通過 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 '<pre>';
print_r($result);

這樣生成的結果,通過json_encode就可以使用 zTree 來顯示了。

關于“redis怎么生成樹型”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“redis怎么生成樹型”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大化| 德化县| 平舆县| 恭城| 山东| 皮山县| 宜川县| 山西省| 石嘴山市| 奇台县| 钟山县| 阳山县| 大田县| 新巴尔虎右旗| 长寿区| 黔西| 柯坪县| 阳城县| 新野县| 嘉义县| 克东县| 郑州市| 平南县| 米泉市| 鲜城| 互助| 酉阳| 灵石县| 张家港市| 响水县| 洮南市| 深圳市| 内黄县| 太原市| 琼中| 治县。| 建阳市| 离岛区| 保山市| 开封市| 乌鲁木齐县|