因为我的博客项目目前用到数据存储是session,存在一些问题,需要引入redis来解决
session目前的问题
目前session直接是js变量,放到nodejs的进程内存中,存在问题
问题一:进程内存有限,访问量过大,内存爆增怎么办?(有可能进程崩溃)
问题二:正式上线后运行的是多进程,进程之间内存无法共享(不同进程间的session不能共享数据)
解决方案 就是本篇博客的主题 redis
redis
1 redis是web server最常用的一个缓存库,数据存放在内存中 (内存读写特比快,但是比较昂贵)
2 相比mysql,访问速度快 (mysql放在磁盘中,而redis放在内存中,两者)
3 但是成本高,可储存的数据量更小 (内存的硬伤)
具体方案
1 将web server和redis拆分为两个单独的服务
2 双方都是独立的,都是可扩展的(例如都扩展成集群)
3 包括mysql,也是一个单独的服务可以扩展
为什么session适合redis
1 session访问频繁,对性能要求极高
2 session 不考虑断电丢失的问题(内存硬伤)
3 session数据量不会太大(相比于mysql中储存的数据)
为什么网站数据不适合redis
操作频率不是太高(相比session)
断电不能丢失必须保留
数据量太大,成本太高
redis的下载及安装安装教程
redis在express框架中的应用