关于redis复用的异或
发布于 7 年前 作者 zacard-orc 4085 次浏览 最后一次编辑是 6 年前 来自 问答

redis是单进程单线程+事件触发+无锁。但在使用node的redis插件,配合EXPRESS时,因为redis插件没有mysql pool的概念,所以来了顾虑。 如果把var redis定义在function外,把事务放在function内,虽然exports后是局部实例变量,但在单个JS里面是全局变量下,是否因为多并发会产生数据污染 如果把var redis定义在function内,把事务放在function内,情感上会保证redis是局部变量,但是否频繁开启和关闭连接redis会有性能影响?

不知各位路过的大侠是怎么的看法?平常是如何使用的?有发生过数据污染吗?

官方的用法: var redis = require(“redis”), client = redis.createClient();

7 回复

有大师指导吗?

数据污染是什么意思?nodejs单线程,不存在污染一说吧?

没太听明白,对第二个问题,Redis 的连接很轻量,但实际上也不需要主动断开 Redis 连接。数据污染是啥意思?

就是所官方的用法就是NEW一个CLINET出来,不像MYSQL有链接池的概念。那既然是一个CLINET,会不会在多并发的情况下,出现后面要传入的数据覆盖前面要传入的数据(数据污染),或者说是CLINET变量阻塞争抢的情况。所以想问问,大家用的时候是不是都是在全局只NEW一个CLINET,还是在FUNCTION内按需NEW一个CLIENT出来

@luinlee 描述如下

回到顶部