Redis的数据类型解读

 更新时间:2025年07月29日 09:16:00   作者:Saness1y  
本文总结Redis核心数据类型(String、Hash、List、Set、ZSet)的常用命令及用途,涵盖基础存储、计数器、集合操作、排序查询等场景,强调原子操作、阻塞处理等注意事项,助于快速掌握Redis实际应用技巧

String

以下是基于图片中 Redis String类型命令 的提取与优化整理,结合实用场景和注意事项,便于快速掌握核心用法:

Redis String类型命令详解与优化指南

1. 基础操作

命令

语法示例

作用

场景说明

SET

SET key value

添加/修改键值对

缓存、简单数据存储

GET

GET key

获取key对应的value

读取缓存或配置

SETNX

SETNX key value

key不存在时才设置(原子操作)

分布式锁、防重复提交

set get setnx

  • setnx 如果key值不存在 才添加 如果存在 就不添加 这才是 真正的新增操作

  • set 后面 跟nx 也可以实现

2. 批量操作

命令

语法示例

优势

MSET

MSET k1 v1 k2 v2

减少网络开销,批量写入

MGET

MGET k1 k2

批量读取,提升效率

  • mset 多量 添加/修改
  • mget 多量 获取

3. 数字增减

命令

语法示例

说明

INCR

INCR key

整数+1(如计数器)

INCRBY

INCRBY key 5

指定步长(如+5)

INCRBYFLOAT

INCRBYFLOAT key 0.5

浮点数增减(如库存调整)

incr (auto-increment)

  • incrby 值改成 负的 就 是自减了
  • incrbyfloat 浮点数增减

4. 有效期控制

命令

语法示例

用途

SETEX

SETEX key 60 "value"

设置键值对并指定有效期(秒)

PSETEX

PSETEX key 10000 "value"

毫秒级有效期(精准控制)

setex (ex =expire)

添加一个Key 并且 设置有效期

同样在后面加 ex 可以实现

psetex

命令对比速查表

需求

应选命令

替代方案

设置值并过期

SETEX

SET

+EXPIRE

防覆盖写入

SETNX

SET

+NX

参数

浮点数计算

INCRBYFLOAT

客户端计算后SET

Key的层级模式

在这里面就形成了层级结构

Hash类型

Redis Hash类型常见命令速查表

命令格式

功能描述

示例用法

HSET key field value

设置/修改Hash键中指定字段的值

HSET user:100 name "张三"

HGET key field

获取Hash键中指定字段的值

HGET user:100 name

→ "张三"

HMSET key field1 value1 [field2 value2...]

批量设置多个字段值(Redis 4.0+建议改用HSET)

HMSET product:500 price 2999 stock 100

HMGET key field1 [field2...]

批量获取多个字段的值

HMGET user:100 name age

HGETALL key

获取Hash键中所有字段和值(返回交替显示的字段/值列表)

HGETALL user:100

HKEYS key

获取Hash键中所有字段名

HKEYS product:500

→ ["price", "stock"]

HVALS key

获取Hash键中所有字段值

HVALS product:500

→ ["2999", "100"]

HINCRBY key field increment

对指定字段值进行整数递增/递减(支持负数)

HINCRBY product:500 stock -5

HSETNX key field value

仅当字段不存在时设置值(原子操作)

HSETNX user:100 email "a@test.com"

  • Hset

相当于 一个 key 可以存放 多个哈希key 和 哈希value

  • Hget

要同时指定 key 和 哈希key 才可以获得 哈希value

HMset 输入一个key 和一次性添加多个 哈希key 和 哈希value

HMget 输入一次key 一次性输入 多个 哈希key 去获得 多个 哈希value

HgetAll 输入一次key 获得所有 的哈希key 哈希value 依次返回

Hkeys 获得所有的哈希key

Hvals 获得所有的哈希value

HincrBy 指定 key 指定哈希key 选择增加的 数值

Hsetnx 指定key 和 哈希key 如果哈希key不存在 则添加 value 如果 存在 则添加失败

Link类型

List接近于 Java中的LinkedList

Lpush 向左推入元素 L是 left

先推入1 后 2 后3 所以顺序是 321

Rpush 向右推入元素 R是 right

Lpop 向左取出元素 并且删除该元素

Rpop 向右取出元素 并且删除该元素

Lrange 从左到右取出 范围内的数 并且不删除

BLpop 左 延迟等待 删除

阻塞方式 第三个参数是时间

如果表内不存在数据 就会等100s 去等

打开第二个客户端去添加数据 然后第一个客户端就会 接收到然后删除

BRpop 右 延迟等待删除

阻塞方式 第三个参数是时间

如果表内不存在数据 就会等100s 去等

打开第二个客户端去添加数据 然后第一个客户端就会 接收到然后删除

Set类型

List接近于 Java中的LinkedList

Lpush 向左推入元素 L是 left

先推入1 后 2 后3 所以顺序是 321

Rpush 向右推入元素 R是 right

Lpop 向左取出元素 并且删除该元素

Rpop 向右取出元素 并且删除该元素

Lrange 从左到右取出 范围内的数 并且不删除

BLpop 左 延迟等待 删除

阻塞方式 第三个参数是时间

如果表内不存在数据 就会等100s 去等

打开第二个客户端去添加数据 然后第一个客户端就会 接收到然后删除

BRpop 右 延迟等待删除

阻塞方式 第三个参数是时间

如果表内不存在数据 就会等100s 去等

打开第二个客户端去添加数据 然后第一个客户端就会 接收到然后删除

SortSet类型

Zadd 添加 注意的是 第一个是 key 然后 前面的数据是 score 后面的值是 value

它会自动按照score 分数排名 升序

Zrem (rem remove) key 为 stus 就是把value 为 Tom 的删除掉

Zrank (rank 排名)

它返回的排名 是从 0 开始的 0 1 2 所以 就是 2

Zrevrank (rev = reverse rank 排名)

倒序排序 从0开始 0 1 2 3 所以是 3

Zcard 获取所有元素总个数

Zcount 0 82 范围查询个数

ZincrBy (选择自增多少分 改成负的就减分了)

Zrange (查出这个范围的所有数据) 起始为0

Zrevrange 通过排序个数 范围查询 (rev = reverse range 范围) )

ZrangeByscore 通过分数范围查询 value

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。 

相关文章

  • 一文解决Redis后台持久化失败的问题:内存不足导致fork失败

    一文解决Redis后台持久化失败的问题:内存不足导致fork失败

    Redis作为一个内存数据库,在执行后台持久化(例如 BGSAVE 命令时)需要fork一个子进程来生成数据库快照(RDB 文件),在生产环境中,有时你可能会在Redis日志中遇到持久化失败的问题,本文将详细介绍该问题的原因以及如何通过调整内核和Redis配置来解决此问题
    2025-07-07
  • redis中删除操作命令

    redis中删除操作命令

    这篇文章主要介绍了redis中删除操作命令,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • Redis全量复制与部分复制示例详解

    Redis全量复制与部分复制示例详解

    这篇文章主要给大家介绍了关于Redis全量复制与部分复制的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Redis爬虫具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • Redis连接池监控(连接池是否已满)与优化方法

    Redis连接池监控(连接池是否已满)与优化方法

    本文详细讲解了如何在Linux系统中监控Redis连接池的使用情况,以及如何通过连接池参数配置、系统资源使用情况、Redis命令监控、外部监控工具等多种方法进行检测和优化,以确保系统在高并发场景下的性能和稳定性,讨论了连接池的概念、工作原理、参数配置,以及优化策略等内容
    2024-09-09
  • Redis 实现队列原理的实例详解

    Redis 实现队列原理的实例详解

    这篇文章主要介绍了Redis 实现队列原理的实例详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-09-09
  • Redis 安装 redistimeseries.so(时间序列数据类型)的配置步骤

    Redis 安装 redistimeseries.so(时间序列数据类型)的配置步骤

    这篇文章主要介绍了Redis 安装 redistimeseries.so(时间序列数据类型)详细教程,配置步骤需要先下载redistimeseries.so 文件,文中介绍了启动失败问题排查,需要的朋友可以参考下
    2024-01-01
  • redis源码分析教程之压缩链表ziplist详解

    redis源码分析教程之压缩链表ziplist详解

    ziplist结构在redis运用非常广泛,是列表、字典等数据类型的底层结构之一。ziplist的优点在于能够一定程度地节约内存。下面这篇文章主要给大家介绍了关于redis源码分析教程之压缩链表ziplist的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-12-12
  • 使用高斯Redis实现二级索引的方法

    使用高斯Redis实现二级索引的方法

    本文介绍了如何通过高斯Redis搭建二级索引,二级索引在电商、图(hexastore)、游戏等领域具有广泛的应用场景,高斯redis现网亦有很多类似应用,需要的朋友跟随小编一起看看吧
    2022-07-07
  • 在Redis集群中使用pipeline批量插入的实现方法

    在Redis集群中使用pipeline批量插入的实现方法

    这篇文章主要介绍了在Redis集群中使用pipeline批量插入的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • 基于Redis分布式BitMap的应用分析

    基于Redis分布式BitMap的应用分析

    这篇文章主要介绍了基于Redis分布式BitMap的应用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03

最新评论