大家晚上好,
我有一个项目的树结构,比如:

[
    {
        "categoryId": "44eec2a3-7ca5-4e27-ab0f-3294a4fdad45",
        "categoryName": "Parent Category",
        "categoryParentId": "44eec2a3-7ca5-4e27-ab0f-3294a4fdad45",
        "children": [
            {
                "categoryId": "cd6df4dc-a117-45c6-9a41-8a4293556042",
                "categoryName": "Sub Category 1",
                "categoryParentId": "44eec2a3-7ca5-4e27-ab0f-3294a4fdad45",
                "children": [
                    {
                        "categoryId": "1d96fd93-dbfa-45cb-8a22-e05f47eca1ff",
                        "categoryName": "Sub Category 1_1",
                        "categoryParentId": "44eec2a3-7ca5-4e27-ab0f-3294a4fdad45"
                    }
                ]
            },
            {
                "categoryId": "4422b64e-b6e3-4d42-8cee-50c5b57e5f3d",
                "categoryName": "Sub Category 2",
                "categoryParentId": "44eec2a3-7ca5-4e27-ab0f-3294a4fdad45",
                "children": [
                    {
                        "categoryId": "bae56c0e-ad41-4c95-97ed-bece419794b5",
                        "categoryName": "Sub Category 2_1",
                        "categoryParentId": "44eec2a3-7ca5-4e27-ab0f-3294a4fdad45"
                    },
                    {
                        "categoryId": "3b02a7d8-3776-46eb-9872-b10c01f43962",
                        "categoryName": "Sub Category 2_2",
                        "categoryParentId": "44eec2a3-7ca5-4e27-ab0f-3294a4fdad45",
                        "children": [
                            {
                                "categoryId": "d123c7c7-535e-445b-87a4-a53f675e1aa6",
                                "categoryName": "Sub Category 2_2_1",
                                "categoryParentId": "44eec2a3-7ca5-4e27-ab0f-3294a4fdad45"
                            }
                        ]
                    }
                ]
            },
            {
                "categoryId": "86ec623d-47fe-43cc-bdb5-dd834d4bd0a2",
                "categoryName": "Sub Category 3",
                "categoryParentId": "44eec2a3-7ca5-4e27-ab0f-3294a4fdad45",
                "children": [
                    {
                        "categoryId": "a82dc6ef-72f8-46d8-ac1e-738b7145b1ce",
                        "categoryName": "Sub Category 3_1",
                        "categoryParentId": "44eec2a3-7ca5-4e27-ab0f-3294a4fdad45",
                        "children": [
                            {
                                "categoryId": "592fbff7-33ea-41ce-b082-3862fe92ef49",
                                "categoryName": "Sub Category 3_1_1",
                                "categoryParentId": "44eec2a3-7ca5-4e27-ab0f-3294a4fdad45"
                            }
                        ]
                    },
                    {
                        "categoryId": "6c9e263f-ef3f-4eb3-8d5b-c07bba4459a7",
                        "categoryName": "Sub Category 3_2",
                        "categoryParentId": "44eec2a3-7ca5-4e27-ab0f-3294a4fdad45",
                        "children": [
                            {
                                "categoryId": "ee68f439-b863-43a4-8df4-c347b575218a",
                                "categoryName": "Sub Category 3_2_1",
                                "categoryParentId": "44eec2a3-7ca5-4e27-ab0f-3294a4fdad45"
                            }
                        ]
                    }
                ]
            },
            {
                "categoryId": "7b18a6c7-a4c9-41cc-aadc-e0abde15662d",
                "categoryName": "Sub parent",
                "categoryParentId": "44eec2a3-7ca5-4e27-ab0f-3294a4fdad45"
            },
            {
                "categoryId": "a527966a-0f1d-41f1-a8e8-bd0552687f03",
                "categoryName": "Sub parent",
                "categoryParentId": "44eec2a3-7ca5-4e27-ab0f-3294a4fdad45"
            }
        ]
    }
]

此树存储在redis中的一个键下。
鉴于id为(ee68f439-b863-43a4-8df4-c347b575218a)的类别已在sql数据库(例如mysql)中更新,那么如何告诉redis更新此元素,而不是刷新缓存并重新设置它?
从数据库中删除项时的相同情况。

最佳答案

从redis文档中获取命令SET
设置键以保存字符串值。如果键已包含一个值,则无论其类型如何,都将覆盖该值。
对于删除键,可以使用DEL
删除指定的键。如果键不存在,则忽略它。
除此之外,如果你想更新json中的条目,你需要从redis中GET当前的json,解析它,更新它,然后SET它回到redis存储中。

关于php - 处理redis中的层次结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51967958/

10-17 02:55
查看更多