redis之字符串

字符串类型Redis 最基础的数据结构。字符串类型 的值实际可以是 字符串简单复杂 的字符串,例如 JSONXML)、数字(整数、浮点数),甚至是 二进制(图片、音频、视频),但是值最大不能超过 512MB

incr 命令用于对值做 自增操作,返回结果分为三种情况:

  • 值不是 整数,返回 错误
  • 值是 整数,返回 自增 后的结果。
  • 键不存在,按照值为 0 自增,返回结果为 1

除了 incr 命令, Redis 还提供了 decr自减)、 incrby自增指定数字)、 decrby自减指定数字)、 incrbyfloat自增浮点数)等命令操作:

内部编码

字符串 类型的 内部编码3 种:

  • int8 个字节的 长整型
  • embstr小于等于 39 个字节的字符串。
  • raw大于 39 个字节的字符串。

Redis 会根据当前值的 类型长度 决定使用哪种 内部编码实现

典型使用场景

缓存功能

下面是一种比较典型的 缓存 使用场景,其中 Redis 作为 缓存层MySQL 作为 存储层,绝大部分请求的数据都是从 Redis 中获取。由于 Redis 具有支撑 高并发 的特性,所以缓存通常能起到 加速读写降低后端压力 的作用。

计数

许多应用都会使用 Redis 作为 计数 的基础工具,它可以实现 快速计数查询缓存 的功能,同时数据可以 异步落地 到其他 数据源。一般来说,视频播放数系统,就是使用 Redis作为 视频播放数计数 的基础组件,用户每播放一次视频,相应的视频播放数就会自增 1

共享Session

一个 分布式 Web 服务将用户的 Session 信息(例如 用户登录信息)保存在 各自 的服务器中。这样会造成一个问题,出于 负载均衡 的考虑,分布式服务 会将用户的访问 均衡 到不同服务器上,用户 刷新一次访问 可能会发现需要 重新登录,这个问题是用户无法容忍的。

限速

很多应用出于安全的考虑,会在每次进行登录时,让用户输入 手机验证码,从而确定是否是用户本人。但是为了 短信接口 不被 频繁访问,会 限制 用户每分钟获取 验证码 的频率。

上述就是利用 Redis 实现了 限速功能,例如 一些网站 限制一个 IP 地址不能在 一秒钟之内 访问超过 n 次也可以采用 类似 的思路。