gpt4 book ai didi

session - 使用哈希与键在 Redis 中存储对象

转载 作者:IT王子 更新时间:2023-10-29 06:05:12 24 4
gpt4 key购买 nike

我想在Redis中存储一个大对象,将它分成多个部分,然后分别存储每个部分。这将允许我实现零件的延迟加载。对象分为根对象和叶对象,叶对象通过代理对象连接到根。当根需要一个对象时,代理决定是否需要从数据库中加载它。

(这是一个 PHP 项目,其中必须在调用之间加载对象:请求 ->(部分)加载对象 -> 处理 -> 响应用户 -> 更新数据库)

我想选择将对象(序列化)存储在单独的键中(遵循一些命名空间约定)或哈希表中,作为字段/值对。

一个主要的限制是我需要对象在一段时间后过期,并且每次访问后都必须更新时间,但对于所有对象,而不仅仅是被访问的对象。例如,root 和 obj1、obj5 和 obj11 被加载和修改,但所有其他的都必须更新过期时间。

到期更新必须由 Redis 处理,因为根节点不知道代理中发生了什么,并且代理之间无法相互通信。基本上,我需要告诉 Reids 为所有满足某些条件的对象重置过期计时器。散列使​​这变得非常容易,因为可以用一个命令完成:

EXPIRE hashtable-name 600

(这可以通过一些带键的模式匹配查询来完成吗?)

但是,总而言之,我想尽量缩短从加载到响应用户的时间。因此,如果 key 给我明显更好的加载时间,同时在更新数据库期间投入更多工作,这可能是首选。

有些操作可能只涉及少量负载,但有些操作可能涉及很多(对象的所有部分)。我不确定我应该针对哪个进行优化。

谢谢!

最佳答案

考虑到一次性使所有相关对象过期的要求,哈希是您用例中的一种方式。使用哈希而不是独立键不会导致任何有意义的性能损失。

关于session - 使用哈希与键在 Redis 中存储对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43195105/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com