redis(一):redis的理解、安装和使用
1.redis的理解
服务端的程序如何去识别客户端的状态,大家知道,http是无状态的,比如说我现在有一个用户a,他访问了服务器程序,那服务器程序如何知道他下一次再访问的时候还是a呢?这就需要用到一个非常重要的概念session,这个session不是浏览器的session,是服务器的session,它是用来存储用户近期的,服务器的session是如何保持在客户端呢?这就要用到浏览器的cookie。所以说session和cookie的关系是服务端用session来保持用户的状态,然后客户端也就是浏览器这层用cookie来保存session,服务器端把session种植在cookie中,然后下次访问的时候cookie会带着这个session过来,进而达到一个身份认证的过程。
说了这么多session和cookie,和redis有什么关系呢?我们的session往哪里存储呢?往服务器中存储?放到内存中,可以。但是当我们的应用程序很大的时候,session容量可能会非常大,比如说淘宝这样的级别。那怎么办?这个时候就需要考虑如何去存储session,有一个非常好用的数据库,就是redis数据库。当然MongoDB数据库可以吗?可以,但是我们需要考虑到读写的性能问题。redis一个快速读写的一个数据库,而且它的使用非常简单,比Mongodb还要简单,就是一个key-value类型的。
上面只是redis的一个使用场景,redis还能做什么呢?redis不能做什么呢?
2.为什么一定要用Redis呢?
上面说了Redis的一些使用场景,那么这些场景的解决方案也有很多其它选择,比如缓存可以用Memcache,Session共享还能用MySql来实现,消息队列可以用RabbitMQ,我们为什么一定要用Redis呢?
速度快,完全基于内存,使用C语言实现,网络层使用epoll解决高并发问题,单线程模型避免了不必要的上下文切换及竞争条件;
详细理解Redis,请参考这篇文章:为什么要用redis?-Redis-PHP中文网 https://www.php.cn/redis/424144.html
3.Redis安装
安装步骤:
Redis 安装 | 菜鸟教程 https://www.runoob.com/redis/redis-install.html
注意:
当前进入redis官网下载的安装包并不是上面教程上的安装包,我们需要下载和教程上相同的安装包才能按照上面的步骤正确启动redis,安装包解压后的目录如下:
安装包已上传,如有需要请自取,供学习参考使用。
链接:https://pan.baidu.com/s/1YdSJNJh2lx-WmgtHftL_VA
提取码:1kbt
4.在koa项目中安装关于redis的中间件
我们需要安装koa-redis
和koa-generic-session
这两个中间件。koa-redis
是用koa程序链接redis服务的中间件;koa-generic-session
是用来处理session的中间件;
两个中间件经常是搭配的。
我们进入koa项目安装这两个中间件:
- 进入项目
- 安装两个中间件
npm i koa-generic-session koa-redis