登录

一、cookie
1.什么是cookie?
存储在浏览器的一段字符串(最大5Kb)
跨域不共享
格式如k1=v1;k2=v2因此可以存储结构化数据
每次发送http请求,会将请求域的cookie一起发送给server;
server可以修改cookie并返回给浏览器;
浏览器可以通过js修改cookie(有限制)(后端设置httpOnly可以限制前端对cookie的修改)

二、session
cookie中会暴露一些敏感信息,很危险
解决方法:cookie中存储userid(标识),server端对应username(通过userid去解析,从一个集合中去查出用户信息来)这就是session,即server端存储用户信息
目前session直接是js变量,放在nodejs进程内存中。这时候存在两个问题:
1.进程内存有限,访问量过大,内存暴增怎么办?
(操作系统会限制一个进程的最大可用内存)
2.正式线上运行是多进程,进程之间内存无法共享
----->解决方案:把session放到redis中存储

三、redis
redis是web server最常用的缓存数据库,数据存放在内存中;
相比mysql,访问速度快(内存和硬盘不是一个数量级的);
但是成本更高,可存储的数据量更小(内存的硬伤)

  • 将web server和redis拆分成两个单独的服务
  • 双方都是独立的,都是可扩展的(例如都扩展成集群)
  • (包括mysql,也是一个单独的服务,也可扩展)
  1. 为何session适合redis?
    session访问频繁,对性能要求极高
    session可不考虑断电丢失数据的问题(内存的硬伤)
    session数据量不会太大(相比于mysql中存储的数据)
    2.为何网站数据不适合用redis?
    操作频率不是太高(相比于session操作)
    断电不能丢失,必须保留
    数据量太大,内存成本太高
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容