[TOC] #### 1. String 类型 --- Redis 的 String(字符串)是其最基础、最核心的数据类型,也是使用频率最高的数据结构 它并非传统意义上的字符串,而是一个二进制安全的存储结构,这意味着它可以存储任何类型的数据,包括:文本、数字、浮点数,甚至是图片或序列化后的对象(通常是以二进制或 Base64 形式) String 核心特性: + 二进制安全:可以存储任意二进制数据,不会因为遇到特殊字符而截断,非常适合存储文件流、序列化对象等 + 容量限制:单个 String 键值对的值最大可以存储 512MB 的数据 + 原子操作:所有针对 String 的命令都是原子性的,在并发场景下无需担心数据安全问题,是实现计数器和分布式锁的关键 + 底层实现:Redis 的 String 并非使用 C 语言原生字符串,底层实现而是采用了自研的 SDS(简单动态字符串) #### 2. 设置键值对 --- `set` 命令用于设置指定 `key` 的字符串值,语法格式: ```plaintext set key value [nx] [ex|px seconds|milliseconds] ``` 核心功能: + 设置键值对:将一个字符串值赋给指定的 key + 自动覆盖:若 key 已存在,直接替换旧值 + 返回确认:设置成功返回 OK,失败(如网络中断)可能抛出异常或错误 + 设置有效期:可选项,使用 ex/px 选项可以指定键值对的过期时间 使用示例: ```bash # 设置键值对 set name 'liang' # 设置键值对,并且有效期 10秒 set gender '男' ex 10 # 设置键值对,并且有效期 8500毫秒 set gender '男' px 8500 ``` 如果需要设置一个确切的时间点过期,可以使用 `exat` 或 `pxat` 选项,语法格式: ```bash set key value exat timestamp # timestamp in seconds set key value pxat timestamp # timestamp in milliseconds ``` 使用示例: ```bash set name 'liang' exat 1775206757 set name 'liang' pxat 1775205017000 ``` 还可以使用 `mset` 命令同时设置一个或多个键值对,也就是批量写入字符串类型的高效操作,语法格式: ```bash mset key value [key value ...] ``` 使用示例: ```bash # 注意:mset 命令无法使用 ex/px 选项设置有效期 mset name 'liang' age 25 height '180cm' ``` #### 3. 获取键值对 --- `get` 命令用于获取指定 `key` 所关联的字符串值,基本语法: ```plaintext get <key> ``` 返回值说明: + 字符串值:若 key 存在且值为字符串类型,返回该值 + nil:若 key 不存在或已经过去,返回 nil + 错误响应:若 key 存在但值不是字符串类型(如 List、Hash、Set 等),返回错误响应 使用示例: ```bash get name get age get height ``` 同样也支持批量获取值,使用 `mget` 命令: ```bash mget name age height ``` #### 4. 数值操作命令 --- 数值操作命令:仅对值为整数键有效,并且操作是原子性的,非常适合在并发场景下使用 + incr:将键的值自增 1 + decr:将键的值自减 1 + incrby:将键的值递增指定的步长 + decrby:将键的值递减指定的步长 使用示例: ```bash set age 20 incr age decr age incrby age 5 decrby age 2 ``` 特别注意:上面四个命令操作的键值不是整数会报错,错误示例: ```bash set age 18.5 # (error) ERR value is not an integer or out of range incr age ``` #### 5. 其他实用命令 --- `strlen key`:用于获取键值的长度 ```bash set height "180cm" strlen height # 5 ``` 使用 `setex` 命令可以直接设置键的值和过期时间(秒) ```bash # 一定要注意参数顺序:键名、过期时间(秒)、键值 setex key seconds value # 使用示例:name: liang(10 秒后过期) setex name 10 'liang' ``` `sexnx` 命令:仅在键不存在时设置值,常用于分布式锁 ```bash # 语法格式 setnx key value # 使用示例 setnx name 'liang' ```