node.js - 我应该像这样使用 redis : req. session.surname = 'toto' 还是像这样 client.set ('surname' , 'toto' )

标签 node.js express redis redis-server

怎么了!我将 redis 与 express 和 nodejs 一起使用。在查看如何从 Redis 插入或检索数据时,我看到了两种方法,一种是这样的:

req.session.surname = 'toto'
console.log(req.session.surname)

另一种方式是这样的:

client.set('surname', 'toto')
client.get('surname', (err, data) => {
    console.log(data)
})

这两种方法有区别吗? 谢谢你的帮助。干杯!

最佳答案

这两种方法没有太大区别。在第一个中,如果您需要更高的可靠性,您可以使用任何其他 session 存储,如 mongo-db(因为 redismemcached 有可能丢失数据,因为数据将仅存储在 RAM 中)。第二个只是设置并获取 key 的所需值,用于不需要 100% 可靠性的一般用途。此外,在并发处理请求时您将面临问题,因为没有像 Redis 这样的内存缓存数据库的并发控制。

如果您需要100% 的可靠性(如果您不想轻易丢失数据),您可以使用mongo-db。在 mongo-db 中,数据将被持久存储,我们也可以控制并发性。

关于node.js - 我应该像这样使用 redis : req. session.surname = 'toto' 还是像这样 client.set ('surname' , 'toto' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57628538/

相关文章:

xml - Node.js:使用 "raw"格式执行 POST 请求的最佳方式?

node.js - elasticsearch.js:updateByQuery(如果存在),否则插入

java - jedis哨兵池中多个jedis连接的使用

java - 提高 Apache Spark 到 Redis 的写入性能

javascript - 使用生成器暂停直到 promise 解决

node.js - Node/Express 与 Angular 2

node.js - 清除 SSL 后响应 404 的 nginx 上的 URL

mysql - 如何正确执行sql查询(node.js + express)

node.js - 带有 Express js 的 Angular 2 cli

spring-boot - 如何隔离spring boot app redis和spring boot session global redis