【Redis】string数据类型


字符串类型是 Redis 最基础的数据类型。

在redis中所有的键都是 string 类型,其他的数据类型也都是在 string 的基础上构建的

string 类型可以是实际上的字符串,也可以是 JSON XML 格式的字符串

常用命令

set

SET key value [NX | XX] [GET] [EX seconds | PX milliseconds | EXAT unix-time-seconds | PXAT unix-time-milliseconds | KEEPTTL]

将 string 类型的 value 设置到 key 中,时间复杂度为 O(1),设置成功返回 OK,失败返回 nil

img

可以看到 set 有很多的参数,正因为这些参数又可以分出几种不同的设置键值的命令

setnx & NX

如果在 set 命令的时候加上 NX 就代表着:只在 key 不存在时才进⾏设置,也就是说当 key 存在就不执行

想实现这个效果也可以使用 setnx 命令,这个命令就是代表着 set 加上了 NX,但是使用这个命令就不能结合 set 中的其他参数使用了。

img

XX

如果在 set 时加上 XX 就代表着:只有 key 存在的时候才能设置,将新的 Value 覆盖原先的,即 key 不存在则不执行。

这个参数并没有对应的命令

img

setex & EX

如果在 set 时加上 EX seconds 就代表着: 使用 seconds 秒设置 key 的过期时间

想实现这个效果也可以使用 setex 命令,这个命令就是代表着 set 加上了 EX。注意 setex 命令的 key 后面跟着的是 seconds 而不是 value,并且 setex 是可以覆盖已存在的 key 的值的。

SETEX key seconds value

img

psetex & PX

如果在 set 时加上 PX millseconds 就代表着: 使用 millseconds 毫秒设置 key 的过期时间

psetex 用法和 setex 一样。

img

mset

set 是单次设置一个 key,而 mset 是单次设置多个 key。

MSET key value [key value ...]

单次设置多个 key 也就意味着可以少点向 redis 发送网络请求,大大提升性能。

需要注意的是:如果单次设置太多个 key 可能会导致 redis 因为这条指令执行的时间太长而阻塞住,所以要根据实际情况衡量。

img

get & mget

get 用来获取单个 key 的 value ,需要注意如果这个 key 的 value 不是 string 类型则会报错

mget 用来⼀次性获取多个 key 的值。如果对应的 key 不存在或者对应的数据类型不是 string 返回 nil

img

incr & decr

INCR key
DECR key

incr:将 key 对应的 string 表⽰的数字加⼀。

decr:将 key 对应的 string 表⽰的数字减⼀。

二者都是如果 key 对应的 string 表示的不是⼀个整型或者范围超过了 64 位有符号整型则报错。

img

incrby & decrby

INCRBY key decrement
DECR key decrement

incrby:将 key 对应的 string 表⽰的数字加上 decrement 对应的值。

decrby:将 key 对应的 string 表⽰的数字减去 decrement 对应的值。

二者都是如果 key 对应的 string 表示的不是⼀个整型或者范围超过了 64 位有符号整型则报错。

img

incrbyfloat

INCRBYFLOAT key increment

incrbyfloat:将 key 对应的 string 表⽰的数字加上 increment 对应的浮点数值,increment 既可以是正数也可以是负数。

img

append

append:如果 key 已经存在并且 value 是⼀个 string,命令会将 value 追加到原有 value 的后边。如果 key 不存在则等同于 set 。

img

getrange

 GETRANGE key start end

返回 key 对应的 value 的⼦串,由 start 和 end 确定(左闭右闭)。负数表示右往左数的位置,-1表示倒数第一个,0表示正数第一个。如果超过了长度则会根据长度自动调整。

img

setrange

SETRANGE key offset value

从指定的 offset 偏移量开始覆盖字符串

img

strlen

获取 key 对应的 value 的长度,如果 value 不为 string 则报错。

内部编码

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

  • 当 value 表示整型并且表示的整型不超过8个字节时,内部编码就为 int 对应 C++ 中的(long long)
  • 当 value 表示不为 int 并且字符串的长度没有超过边界值(默认值为39)个字节时,为 embstr 类型
  • 除去以上两种都为 raw

redis 会根据当前的类型和长度去决定使用哪一种内部编码实现

相关推荐

  1. 【代码】数据类型之基本数据类型

    2024-04-21 04:10:04       5 阅读
  2. 数据库常用数据类型

    2024-04-21 04:10:04       33 阅读
  3. RefCell 数据类型

    2024-04-21 04:10:04       29 阅读
  4. 装箱 Box 数据类型

    2024-04-21 04:10:04       35 阅读
  5. PHP基础 - 数据类型

    2024-04-21 04:10:04       46 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-21 04:10:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-21 04:10:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-21 04:10:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-21 04:10:04       18 阅读

热门阅读

  1. stable diffusion本地部署教程

    2024-04-21 04:10:04       16 阅读
  2. AIOS: LLM Agent Operating System

    2024-04-21 04:10:04       16 阅读
  3. uni-app vue3 setup 如何使用 onShow

    2024-04-21 04:10:04       14 阅读
  4. SpringBoot Jar包在CentOS7.x上注册成服务并开机启动

    2024-04-21 04:10:04       12 阅读
  5. Python 一个简化地址解析的利器 addressrec

    2024-04-21 04:10:04       14 阅读
  6. js DOM模型常用方法复盘梳理

    2024-04-21 04:10:04       15 阅读
  7. 信号塔(树形dp)

    2024-04-21 04:10:04       8 阅读
  8. Ocr识别

    2024-04-21 04:10:04       12 阅读
  9. 音视频、网络带宽等常用概念详解

    2024-04-21 04:10:04       13 阅读
  10. pytorch中模型训练的学习率动态调整

    2024-04-21 04:10:04       11 阅读
  11. web应用使用spring

    2024-04-21 04:10:04       16 阅读
  12. 2024.4.20力扣每日一题——组合总和

    2024-04-21 04:10:04       11 阅读
  13. 游戏中的伤害类型

    2024-04-21 04:10:04       11 阅读