字符串
字符串是Redis最基础的数据结构,其他数据结构都是基于字符串构建的,键也都是字符串。
字符串的值可以是字符串、数字和二进制数据,但最大值不能超过512MB。
字符串常用命令
设置值
set key value [ex seconds][ps milliseconds] [nx|xx]
- ex seconds:为键设置秒级过期时间
- px milliseconds:为键设置毫秒级过期时间
- nx:键必须不存在,才可以设置成功,用于添加
- xx:键必须存在,才可以设置成功,用于更新
获取单个值:get key
批量设置值:mget key value [key value ...]
批量获取值:mget key [key ...]
计数:incr key
返回结果:
- 值不是整数,返回错误
- 值是整数,返回自增后结果
- 键不存在,按照值为0自增,返回结果1
自减:decr
自增指定数字:incrby
自减指定数字:decrby
自增浮点数:incrbyfloat
内部编码
- int:8个字节的长整型
- embstr:小于等于39个字节的字符串
- raw:大于39个字节的字符串
使用
object encoding key可以看到键所属的内部编码
字符串的典型使用场景
- 缓存:加速读写和降低后端压力。比较推荐的键名是“业务名:对象名:id:[属性]”,可以防止键冲突和项目的可维护性,但也要注意键名过长对于内存的浪费
- 计数:可以实现快速计数、查询缓存的功能,同时数据可以异步落地到其他数据源。一个真实的计数系统还要考虑防作 弊、按照不同纬度计数、数据持久化等因素
- 共享Session:通过Redis对Session集中管理,需要保证Redis的高可用和扩展性,每次用户更新或查询登录信息都从Redis集中获取
- 限速:在限制用户在一段时间内只能操作几次的场景,可以利用Redis的超时功能进行控制