数据类型 string
一、介绍
在 string 中,存储方式就是直接二进制存储,存进去是什么取出来就是什么。
所以可以存文本,整数,JSON,二进制数据(图片,视频,音频)
存储大小限制 512 MB,所以一般不存视频和音频。
二、常见 string 命令
1、set key value [ex seconds | px milliseconds] [nx | xx]
设置键值对 key value
ex 表示 expire 设置过期时间,px 就是单位毫秒的过期时间
nx 表示添加键值对:已经存在 key 那就不操作,不存在 key 再添加 key value
xx 表示修改键值对:已经存在 key 那就把对应 value 覆盖,不存在 key 不操作
如果在一个 key 的过期时间内覆盖,那么 ttl 会消失或覆盖
2、get key
获取 key 的 value
3、mset key value [key value ...]
一次设置多个 key value
4、mget key [key ...]
一次获取多个 key 的 value
5、setnx key value
等同于 set key value nx
6、setex key seconds value
等同于 set key value ex seconds
7、psetex key milliseconds value
等同于 set key value px milliseconds
8、增减数值
这里的操作仅限于 value 是整数或浮点数
(1)incr key
使 key 对应 value 增加1
(2)incrby key n
使 key 对应 value 增加 n
(3)decr key
使 key 对应 value 减少1
(4)decr key n
使 key 对应 value 减少 n
(5)incrbyfloat key n
使 key 对应 value 增加 n
注意:
如果 key 不存在那就默认 key 对应 value 是0进行操作
1234是对应 value 整数,5对应 value 是浮点数
n 可以是负数
9、append key value
如果 key 存在,那就是尾部追加 value
如果 key 不存在,相当于 set
返回的是 value 字节数,utf8 下一个汉字对应3字节
10、getrange key start end
获取 key 对应 value 下标 [start, end] 内的字符串
支持负数 index,代表下标 len - index 位置
11、setrange key offset value
从偏移量 offset 位置开始替换成 value
12、strlen key
获取 key 对应 value 的字节长度
三、编码方式
int: 识别到 value 可以用64位整数存
emstr: 相对短的字符串存储
raw: 相对长的字符串存储
四、应用场景
1、作为缓存
类似于 JSON 格式存储信息。
应用服务器会先从 Redis 缓存查找数据,如果有直接返回,如果没有再从数据库查找,找到之后返回,并且将数据写回 Redis
为了防止 Redis 里面的数据越积越多,会设置超时时间,并且当 Reids 剩余内存太少的时候会进行淘汰策略。
2、计数功能
Redis 擅长计数,只要一个 incr key 就行,但是 Redis 不擅长统计,比如获取播放量前100的视频,但是数据库擅长统计,所以此时的办法就是异步把 Redis 的数据写入到专门用于统计的数据库统计之后进行返回。
3、session 会话
cookie 存储在客户端,一般是 sessionId,每次请求的时候带上 sessionId 服务器就能识别用户状态。
session 存储在服务器,当有 sessionId 传来存储的 session 数据就能进行用户状态的识别。
但是由于分布式系统有多台应用服务器,为了每台服务器都能识别所有的用户,Redis 有专门存放 session 信息的缓存,这样设计就能解决问题。
4、验证码
(1)生成验证码一般有两种限制:
a、1分钟内获取不超过5次
设置过期时间60秒并且 nx
如果 key 存在 incr key 并检查是否超过5次
如果 key 不存在生成验证码后返回
b、30秒内不能重复获取
设置过期时间30秒 nx 后验证即可
(2)验证验证码
生成的时候存储 key value,验证的时候对应验证即可