Redis

Redis 安装
下载地址:https://github.com/MSOpenTech/redis/releases
打开一个 cmd 窗口 使用 cd 命令切换目录到 C:\redis 运行:

redis-server.exe redis.windows.conf

这时候另启一个 cmd 窗口,原来的不要关闭,不然就无法访问服务端了。切换到 redis 目录下运行:

redis-cli.exe -h 127.0.0.1 -p 6379

设置键值对:

set myKey abc

取出键值对:

get myKey

session和redis如何连接应用呢?

session本质上也是cookie,cookie携带session返回给服务端

redis是一个存储数据库

redis读写快速,使用简单,常用于存储session 

需要如下的 两个中间件

在项目中安装两个中间件: koa-generic-session koa-redis

npm i koa-generic-session  --save
npm i koa-redies --save

对session进行加密

const session = require('koa-generic-session')
const Redis = require('koa-redis')
const Store = new Redis().client
app.keys = ['saffasfassadasd', 'safasf'];
// 对session进行加密的key
app.use(session({
  prefix:"aaafsfa", // 给session对象在redis存储的地址名前面添加的前缀内容
  key:"abc", // key名
  store:new Redis() // 在Redis中放入一个session对象
}))
router.get('/', async function (ctx, next) {
  ctx.session.name = ctx.request.query.name
  // 从url中获取name值赋给session
  const st = await Store.hset('fix','name',ctx.request.query.name)
  // 给fix存储地址类型是hash
  const a = await Store.get("aaafsfa"+ctx.cookies.get("abc"))
  // 获取括号中地址的字符串sting类型
  console.log(JSON.parse(a).name)
  // 转化成对象
  ctx.body = 'this is a users response!'

启动服务 测试结果如下
在这里插入图片描述
重新打开一个cmd窗口 进入到Redis环境下 执行 redis-cli
在这里插入图片描述
执行命令: 如下
在这里插入图片描述
Redis的典型应用场景
一:缓存热点数据

热点数据(经常会被查询,但是不经常被修改或者删除的数据),首选是使用redis缓存,redis的性能非常优秀。

二:计数器

诸如统计点击数、访问数、点赞数、评论数、浏览数等应用,由于单线程,可以避免并发问题,保证数据的正确性,并且100%毫秒级性能,同时开启Redis持久化,以便于持久化数据。

三:单线程机制

验证前端的重复请求,可以自由扩展类似情况),可以通过redis进行过滤,比如,每次请求将Request IP、参数、接口等hash作为key存储redis(幂等性请求),设置多长时间有效期,然后下次请求过来的时候先在redis中检索有没有这个key,进而验证是不是一定时间内过来的重复提交;再比如,限制用户登录的次数,比如一天错误登录次数10次等。
秒杀系统,基于redis是单线程特征,防止出现数据库超卖;全局增量ID生成等;

四:排行榜

谁得分高谁排名在前,比如点击率最高、活跃度最高、销售数量最高、投票最高的前10名排行等等;

五:分布式锁

使用redis可以实现分布式锁,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件:

互斥性,在任意时刻,只有一个客户端能持有锁。

不会发生死锁,即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。

具有容错性,只要大部分的Redis节点正常运行,客户端就可以加锁和解锁。

解铃还须系铃人,加锁和解锁必须是同一个客户端,客户端不能解他人加的锁。

六:Session存储

使用Redis的进行会话缓存(session cache)是非常常见的一种场景。用Redis缓存会话比其他存储(如Memcached)的优势在于:Redis提供持久化,目前大量的方案均采用了redis作为session的存储方案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值