# 从 Session 到 Redis
# Session 的短板
session 属于 js 变量,它存放在 nodejs 进程内存中
- 当内存有限,访问量过大,内存保证了会对 session 的存储有影响
- 上线后如果是多进程,但是进程之间的内存是无法共享的
# Redis
- web server 常用的缓存数据库,数据存放在内存中,读写特别快
- 相比 mysql 访问速度更快,毕竟 mysql 属于硬盘数据库,内存和硬盘的访问速度不是一个数量级别的
- 个人理解:
- nodejs 的运行,可以想象成一个进程的工作。每个进程开始时,都会分配一定的运行内存。像 nodejs,在 64 位中的内存大概不超过 3G。而 session 的写法,相当于将 session 的存储和 nodejs 的运行程序放在了一块内存中。而随着 session 的不断增大,必然会带来内存溢出等问题。
- 而 redis 相当于重新起了一个存储服务。虽然数据都是存储在内存中,但存储的内存和 nodejs 的运行内存并不在一起,而是一个独立的进程。进程与进程之间的内存是不共享的。后期可以分离开单独进行扩容等维护。这也是分层处理的一种思想吧
# Redis 的安装
- 安装 1
Mac 的安装,通过
brew install redis
安装时,需要通过brew search redis
查询能安装的 redis 版本。按查询结果能直接安装 redis,但是我只安装成功了 redis@4 版本。但是安装后,redis-server 指令一直没有配置成功,就放弃了 ू(ʚ̴̶̷́ .̠ ʚ̴̶̷̥̀ ू)...
- 安装 2:通过 tar 包安装
- 下载压缩包后,在
/usr/local/
中进行解压tar xzf redis-6.2.6.tar.gz
cd /usr/local/redis-6.2.6.tar.gz
进入 redis 文件夹下,执行make
安装- 安装后执行
make install
, 基本安装结束,配置都才用了默认配置 - 中间碰到了没有权限的问题,通过
sudo
即可
- 下载压缩包后,在
# Redis 使用
redis-server
就可以启动 redis 服务,服务启动后,如图:
redis-cli
就开启了 redis 的客户端链接,redis 的指令如下:set key value
设置 key = valueget key
获取 key 的存储keys *
获取全部的存储del key
删除 key