键都是字符串类型.

字符串类型的值实际可以是:

  • 字符串
    • 简单字符串
    • 复杂字符串
      • json
      • xml
    • 数字
      • 整数
      • 浮点数
    • 二进制
      • 图片
      • 音频
      • 视频

最大不能超过 512MB.

image.png

2.2.1 命令

1. 常用命令

(1) 设置值

(2) 获取值
  • get

(3) 批量设置值
  • mset

(4) 批量获取值
  • mget

如果不用 mget, 那么需要 n 次 get 操作:

  • n 次 get 时间 = n 次网络时间 + n 次命令时间

image.png

使用 mget:

  • n 次 get 时间 = 1 次网络时间 + n 次命令时间

image.png

网络会成为性能瓶颈:

  • 注意每次的命令数过多也会阻塞 Redis

image.png

(5) 计数
  • incr
  • decr
  • incrby
  • decrby
  • incrbyfloat

2. 不常用命令

(1) 追加值
  • append

给字符串值追加.

(2) 字符串长度
  • strlen

(3) 设置并返回原值
  • getset

(4) 设置指定位置的字符
  • setrange

(5) 获取部分字符串
  • getrange

image.png

2.2.2 内部编码

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

  • int: 8B
  • embstr: 小于等于 39B 的字符串
  • raw: 大于 39B 的字符串

2.2.3 典型使用场景

1. 缓存功能

image.png

键命名:

  • 比较推荐的方式是使用 “业务名:对象名:id:[属性]” 作为键名(也可以不是分号)

2. 计数

实际上一个真实的计数系统要考虑的问题会很多:防作弊、按照不同维度计数,数据持久化到底层数据源等。

3. 共享 Session

可能由于负载均衡, 当用户刷新页面后需要重新登录:

image.png

用 Redis 将用户 Session 进行集中管理:

image.png

4. 限速

image.png

利用超时机制实现:

image.png