admin管理员组

文章数量:1037775

【redis】string类型相关操作:SET、GET、MSET、MGET、SETNX、SETEX、PSETEX

Redis 所有的 key 都是字符串,value 的类型是存在差异的

二进制存储

Redis 中的字符串,直接就是按照二进制数据的方式存储的

不仅仅可以存储文本数据,还可以存储整数、普通的文本字符串、JSON、XML、二进制数据(图片、视频、音频…)

  • 音频、视频体积可能会比较大,Redis 对于 string 来说,限制了大小最大为 512M
  • Redis 是单线程模型,希望进行的操作都是比较快速的,如果存的数据都很大,读取时间就要很长,就可能会导致 Redis 被阻塞
  • 所以一般不会存储大文件

编码转换

Redis 不会做任何的编码转换,存的是什么,取出来就还是什么。

  • MySQL 的默认字符集如果是拉丁文,那么当你插入中文的时候,就会失败。当你插入一个数据的时候,MySQL 就会把你插入的数据拿到字符集里面去找,看看是不是合法的数据,有问题就插入不了
  • Redis 就没有 MySQL 这么详细的验证步骤,你存的是什么,取出来的就还是什么。你按 utf-8 存,取出来还是 utf-8,按照 gbk 存,取出来就还是 gbk 所以 Redis 一般就不会遇到乱码问题(存取用的编码方式不一致)

SET 和 GET

SET

string 类型的 value 设置到 key 中。如果 key 之前存在,则覆盖,⽆论原来的数据类型是什么。之前关于此 keyTTL 也全部失效。

语法:

代码语言:javascript代码运行次数:0运行复制
SET key value [expiration EX seconds|PX milliseconds] [NX|XX]
  • set key value ex 10 相当于
    1. set key value
    2. expire key 10
    • 把两步操作一步完成,减少客户端-服务器交互次数,提高效率。其次,一个命令完成就是原子操作,保证原子性
  • NX
    • 如果 key 不存在,才设置
    • 如果 key 存在,则不设置(返回 nil
  • XX
    • 如果 key 存在,才设置(相当于更新 keyvalue
    • 如果 key 不存在,则不设置(返回 nil

Redis 文档给出的语法格式说明:

  • [] 相当于一个独立的单元,表示可选项(可有可无),其中 | 表示“或者”的意思,多个只能出现一个
  • [][] 之间,是可以同时存在的

快速失去年终奖的小技巧:清除 Redis 上所有的数据==>删库

  • FLUSHALL,可以把 Redis 上所有的键值对都带走

GET

语法:

代码语言:javascript代码运行次数:0运行复制
GET key
  • 对于 GET 来说,只支持字符串类型的 value,如果 value 是其他类型,使用 GET 就会出错
image.png

MSET 和 MGET

一次操作多组键值对,一次网络传输就能完成多组键值对的操作

image.png

MSET 语法:

代码语言:javascript代码运行次数:0运行复制
MSET key value [key value...]

MGET 语法:

代码语言:javascript代码运行次数:0运行复制
MGET key [key...]
image.png
  • MSETMGET 的时间复杂度都是:
O(N)

N

不是整个 redis 服务器中所有 key 的数量,而是当前命令中给出的 key 的数量

SETNX、SETEX 和 PSETEX

  • SETNX:不存在才能设置,存在则设置失败
image.png|247
  • SETEX:设置 key 的过期时间(单位 s
  • PSETEX:设置 key 的过期时间(单位 ms

针对 set 的一些常见写法,进行了缩写。之所以这样搞,就是为了让操作更符合人的直觉(使用者的门槛就越低,要背的东西就越少)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-03-10,如有侵权请联系 cloudcommunity@tencent 删除redissetstring数据get

【redis】string类型相关操作:SET、GET、MSET、MGET、SETNX、SETEX、PSETEX

Redis 所有的 key 都是字符串,value 的类型是存在差异的

二进制存储

Redis 中的字符串,直接就是按照二进制数据的方式存储的

不仅仅可以存储文本数据,还可以存储整数、普通的文本字符串、JSON、XML、二进制数据(图片、视频、音频…)

  • 音频、视频体积可能会比较大,Redis 对于 string 来说,限制了大小最大为 512M
  • Redis 是单线程模型,希望进行的操作都是比较快速的,如果存的数据都很大,读取时间就要很长,就可能会导致 Redis 被阻塞
  • 所以一般不会存储大文件

编码转换

Redis 不会做任何的编码转换,存的是什么,取出来就还是什么。

  • MySQL 的默认字符集如果是拉丁文,那么当你插入中文的时候,就会失败。当你插入一个数据的时候,MySQL 就会把你插入的数据拿到字符集里面去找,看看是不是合法的数据,有问题就插入不了
  • Redis 就没有 MySQL 这么详细的验证步骤,你存的是什么,取出来的就还是什么。你按 utf-8 存,取出来还是 utf-8,按照 gbk 存,取出来就还是 gbk 所以 Redis 一般就不会遇到乱码问题(存取用的编码方式不一致)

SET 和 GET

SET

string 类型的 value 设置到 key 中。如果 key 之前存在,则覆盖,⽆论原来的数据类型是什么。之前关于此 keyTTL 也全部失效。

语法:

代码语言:javascript代码运行次数:0运行复制
SET key value [expiration EX seconds|PX milliseconds] [NX|XX]
  • set key value ex 10 相当于
    1. set key value
    2. expire key 10
    • 把两步操作一步完成,减少客户端-服务器交互次数,提高效率。其次,一个命令完成就是原子操作,保证原子性
  • NX
    • 如果 key 不存在,才设置
    • 如果 key 存在,则不设置(返回 nil
  • XX
    • 如果 key 存在,才设置(相当于更新 keyvalue
    • 如果 key 不存在,则不设置(返回 nil

Redis 文档给出的语法格式说明:

  • [] 相当于一个独立的单元,表示可选项(可有可无),其中 | 表示“或者”的意思,多个只能出现一个
  • [][] 之间,是可以同时存在的

快速失去年终奖的小技巧:清除 Redis 上所有的数据==>删库

  • FLUSHALL,可以把 Redis 上所有的键值对都带走

GET

语法:

代码语言:javascript代码运行次数:0运行复制
GET key
  • 对于 GET 来说,只支持字符串类型的 value,如果 value 是其他类型,使用 GET 就会出错
image.png

MSET 和 MGET

一次操作多组键值对,一次网络传输就能完成多组键值对的操作

image.png

MSET 语法:

代码语言:javascript代码运行次数:0运行复制
MSET key value [key value...]

MGET 语法:

代码语言:javascript代码运行次数:0运行复制
MGET key [key...]
image.png
  • MSETMGET 的时间复杂度都是:
O(N)

N

不是整个 redis 服务器中所有 key 的数量,而是当前命令中给出的 key 的数量

SETNX、SETEX 和 PSETEX

  • SETNX:不存在才能设置,存在则设置失败
image.png|247
  • SETEX:设置 key 的过期时间(单位 s
  • PSETEX:设置 key 的过期时间(单位 ms

针对 set 的一些常见写法,进行了缩写。之所以这样搞,就是为了让操作更符合人的直觉(使用者的门槛就越低,要背的东西就越少)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-03-10,如有侵权请联系 cloudcommunity@tencent 删除redissetstring数据get

本文标签: redisstring类型相关操作SETGETMSETMGETSETNXSETEXPSETEX