String类型的应用场景

缓存功能

String类型的应用场景_第1张图片
整体思路:应用服务器访问数据时,先查询redis,如果redis上存在数据,就直接返回给应用服务器,不会访问Mysql。如果redis上没有数据,则会读取mysql,返回给应用服务器,并把数据写到redis中。

上述策略,存在一个明显的问题:不断有新的数据放入到redis中,内存满了怎么办?

  • 在把数据写到redis的同时,设置过期时间
  • redis在内存不足的时候,提供了淘汰机制

计数功能

视频网站的视频播放次数,用户每播放一次视频,相应的视频播放次数就增加1

String类型的应用场景_第2张图片

什么是异步写入

某一时刻是该视频播放的高峰期,并不是来一个播放请求,就立即将这个数据写入数据库;而是等到视频播放次数减少的时候,分批次写入。

共享会话session

在分布式web服务中如果还像单体架构那样,把session信息存在各自的服务器中,出于负载均衡考虑,分布式服务会将用户的访问请求均衡发送到不同的服务器上,并且通常无法保证用户每次请求都会均衡到同一台服务器上,这样当用户刷新的时候就可能需要重新登入。如下图所示:
String类型的应用场景_第3张图片
每个应用服务器维护各自的会话数据,彼此之间不共享,导致用户请求访问到不同的服务器上。为了解决这个问题,可以使用redis将用户的session信息进行集中管理,如下图所示:
String类型的应用场景_第4张图片
这种模式下,保证了redis是高可用和可扩展性,无论用户请求被均衡分配到哪台web服务器上,都集中从redis中查询,更新session信息。

手机验证码

为了短信接口不会频繁访问,造成服务器压力太大,限制用户一分钟中内只能获取验证码3次

核心命令set key 1 ex 60 nx,此时value为1表示用户获取一次,第二次请求就使用incr当一分钟内超过3次就进行一些处理(比如5分钟只能获取3次,以此类推,严重的封禁ip),过期时间1分钟,nx只有不存在key才能设置成功。

你可能感兴趣的:(redis,redis,缓存)