Node Redis 小试

半年的半年

背景

如果一个 Node 应用有多台服务器或多个进程在跑,每个进程都拥有自己的内存空间,各个进程之间的数据共享就显得非常重要。

使用数据库是一个解决数据共享的方案,但一些临时性、高并发的数据并不太适合直接写入数据库,比如 session。

引入 Redis 可以解决数据共享的问题,也因为 Redis 是基于内存存储的特点,有着非常高的性能,可以大大降低数据库读写的压力,提升应用的整体性能。

Redis 还可以用来:缓存复杂的数据库查询结果,做自增长统计,暂存用户操作状态等功能。

安装 Redis 客户端

在开始使用 redis 之前,首先需要安装 Redis 客户端

以 MAC OS 为例,通过 brew 安装 Redis

brew install redis

启动 Redis

redis-server

安装 ioredis NPM 模块

安装 ioredis

npm install ioredis

小试

var Redis = require('ioredis')
var redis = new Redis()

redis.set('test-redis-expire', 1)

// 设置过期时间 3s
redis.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)

结果:

1
null

刚开始使用 redis 的时候很困惑,为什么 JAVA 调用 Redis 的语法看起来是同步的,到了 Node 就成了异步的呢,会不会存在什么逻辑问题?

事实上,Node 调用 Redis 确实是异步的,只不过因为 Redis 是单线程的特点,任何操作都是原子操作。

在小试的代码中,redis.set redis.get 都只是向 Redis 发送了一个通知,添加到了 Redis 的任务队列中而已。

阅读 2.6k

那些年遇到过的坑
主要记录平时遇到的一些问题的推理过程和解决办法

细心并且追求完美的处女座一枚,热爱前端开发

1.1k 声望
409 粉丝
0 条评论
你知道吗?

细心并且追求完美的处女座一枚,热爱前端开发

1.1k 声望
409 粉丝
宣传栏