例如,我将对象 user 存储在数据库中(Redis) 它有几个领域:
在Python程序中,我有类( User ),该对象具有相同的字段。此类的实例映射到数据库中的对象。问题是如何从数据库中获取数据以获得最佳性能:
P.S。 redis在localhost中运行
答案 0 :(得分:2)
该方法完全取决于要求。
如果只有一个客户端读取和修改属性,这是一个相当简单的问题。修改数据时,只需更改当前Python程序中的实例属性,同时保持数据库同步,同时保持程序的响应。为此,您应该将阻塞调用外包给另一个线程或使用greenlet。如果只有一个客户端,则无需在每次值查找时从DB中获取属性。
如果有多个客户端读取数据且只有一个客户端修改数据,则必须考虑所需的同步级别。如果需要100%同步,则必须在每次值查找时从数据库中获取数据。
如果有多个客户端更改数据库中的数据,您最好先查看坚如磐石的行业标准解决方案,而不是编写自己的数据库缓存/映射器。
你对(2)和(3)的区分并没有多大意义。如果您在每次查找时获取数据,则无需“存储”数据。你看,如果涉及多个客户,这些事情会很快变得非常复杂,而且很难做到正确。