【发布时间】:2019-05-09 17:58:34
【问题描述】:
例如:
let client1 = new Client(); // it can do client1.connect() and other methods
await redis.hset('client1', JSON.stringify(client1));
client1 = await redis.get('client1');
client1 = JSON.parse(client1);
await client1.connect();
如果您要取回该值并使用 JSON.parse() 它,它仍然可以正常工作,这是否安全?
【问题讨论】:
-
JSON.stringify将省略函数和一些其他值,如果Client已经不是普通的 Json 对象,则这些值将难以重构。换句话说,你可以在 Redis 中存储某些类属性,但client1.connect()肯定不行。 -
@p.s.w.g 如果我确实想将这些客户端存储在每个用户都有自己的客户端(用户:客户端)并且有
.connect()工作的地图中,但在副本之间有相同的地图可用(其中这就是为什么我对使用 Redis 进行分布式键值感兴趣),有没有办法做到这一点? -
我很难想出你真正想要的任何理由。如果您尝试实现object pool,那么池实际上应该只存在于内存中。无论如何,永远不会有办法在两个服务器或进程之间共享一个对象的单个 instance,您必须以某种方式 clone 该对象,此时,您只需从一个进程传递可序列化的属性,并使用它们在另一个进程中构造一个新实例。
-
@p.s.w.g 这正是我想要的!好的,是时候学习一种新的设计模式了!非常感激。 ????
标签: javascript node.js redis