1. 首页
  2. >
  3. 数据库技术
  4. >
  5. Redis

Redis 之 字符串

字符串是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 ...] 批量获取值

Redis 之 字符串

批量操作可以大大节省网络时间:

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会根据当前值的类型和长度决定使用哪种内部编码,如下截图:

Redis 之 字符串

典型使用场景

  • 缓存功能
  • 计数,点赞数,视频播放数
  • 存储共享Session
  • 限速,和计数原理相同,达到一定值后,报错即可(自增)