字符串是Redis最基础的数据结构。关键字都是字符串类型。字符串的值可以是字符串(简单的字符串、复杂的字符串(JSON,XML)、数字、甚至是二进制(图片、音频、视频),但是最大值不能超过 512M。
常用命令
set key value [ex seconds] [px milliseconds] [nx|xx]
ex seconds :为键设置秒级过期时间
px milliseconds 为键设置毫秒级过期时间
nx: 键必须不存在,才可以添加成功
xx: 与nx相反,键必须存在,才可以添加成功
set key value ex seconds
等价于 setex key seconds value
set key value nx
等价于 setnx key value
get key
获取值,如果存在直接返回value,不存在返回nil(空)
mset key value [key value...]
批量设置值
mget key [key ...]
批量获取值
批量操作可以大大节省网络时间:
n次get时间 = n次网络时间 + n次命令时间
批处理所需时间 = 1次网络时间+n次命令时间
incr key
计数,用于对值进行自增操作,结果有三种
- 键不存在,按照值为0自增,返回结果1
- 值是整数,返回自增后的结果
- 值不是整数,返回异常 ERR value is not an integer or out of range
除自增外Redis还有:
decr key
(自减)、incrby key increment
(指定增量)、decrby key decrement
(指定减量)。
不常用命令
append key value
追加值
strlen key
字符串长度
getset key value
设置并返回原来的值,原来值不存在返回nil
setrange key offset value
替换指定位置字符串
getrange key start end
获取指定部分字符串
内部编码实现
-
int :8个字节的长整型
-
embstr:小于等于39字节的字符串
-
raw:大于39个字节的字符串
Reids会根据当前值的类型和长度决定使用哪种内部编码,如下截图:
典型使用场景
- 缓存功能
- 计数,点赞数,视频播放数
- 存储共享Session
- 限速,和计数原理相同,达到一定值后,报错即可(自增)