背景如果一个Node应用有多个服务器或者多个进程在运行,每个进程都有自己的内存空间,那么进程之间的数据共享就显得非常重要。使用数据库是一种数据共享的解决方案,但是一些临时的、高并发的数据不适合直接写入数据库,比如session。Redis的引入可以解决数据共享的问题,而且由于Redis基于内存存储的特点,具有非常高的性能,可以大大减轻数据库读写的压力,提高应用的整体性能.Redis还可以用来:缓存复杂的数据库查询结果,做自增长统计,暂存用户操作状态等功能。安装Redis客户端在开始使用redis之前,首先需要安装Redis客户端。以MACOS为例,通过brew安装RedisbrewinstallredisstartRedisredis-serverinstallioredisNPMmoduleinstallioredisnpminstallioredissmalltestvarRedis=require('ioredis')varredis=newRedis()redis.set('test-redis-expire',1)//设置过期时间3sredis.expire('test-redis-expire',3)redis.get('test-redis-expire',(err,value)=>{console.log(value)})setTimeout(()=>{redis.get('test-redis-expire',(err,value)=>{console.log(value)})},5000)结果:1null刚开始用redis的时候很迷茫。为什么JAVA调用Redis的语法看起来是同步的,到了Node就变成异步了?逻辑上有问题吗?其实从Node调用Redis确实是异步的,但是由于Redis是单线程的,所以任何操作都是原子操作。在小测的代码中,redis.setredis.get只是向Redis发送了一个通知,加入到Redis的任务队列中。
