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进行相关优化详解

    Redis进行相关优化详解

    这篇文章主要介绍了Redis进行相关优化,Redis在项目中进行广泛使用,那么在日常的开发过程中,我们在使用Redis的过程中需要注意那些呢?本文将从三个维度来讲解如何进行Redis的优化
    2022-08-08
  • Redis五种数据结构在JAVA中如何封装使用

    Redis五种数据结构在JAVA中如何封装使用

    本篇博文就针对Redis的五种数据结构以及如何在JAVA中封装使用做一个简单的介绍。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-11-11
  • Redis密码设置与访问限制实现方法

    Redis密码设置与访问限制实现方法

    这篇文章主要介绍了Redis密码设置与访问限制实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • Redis之Set和Zset使用及说明

    Redis之Set和Zset使用及说明

    文章介绍了Redis集合和有序集合的相关命令,包括添加、查询、修改、删除元素,集合间的交集、并集、差集操作,以及数据库管理操作,强调了在实际开发中合理使用这些功能的重要性
    2026-03-03
  • redis分片集群的部署和使用教程

    redis分片集群的部署和使用教程

    这篇文章介绍了如何使用Docker和脚本在虚拟机上部署Redis集群,并详细讲解了Spring Boot整合Redis集群的方法,包括配置、读写分离以及一些须知,感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • Redis 哨兵与集群脑裂问题及其解决

    Redis 哨兵与集群脑裂问题及其解决

    本文主要介绍了Redis 哨兵与集群脑裂问题及其解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-04-04
  • 通过kubesphere部署redis的方法

    通过kubesphere部署redis的方法

    这篇文章主要介绍了通过kubesphere部署redis的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • redis简介_动力节点Java学院整理

    redis简介_动力节点Java学院整理

    这篇文章主要介绍了redis简介,Redis是一个开源的,先进的 key-value 存储可用于构建高性能,可扩展的 Web 应用程序的解决方案,有兴趣的可以了解一下
    2017-08-08
  • Redis中StringRedisTemplate中HashOperations的使用详解

    Redis中StringRedisTemplate中HashOperations的使用详解

    文章介绍了Spring Boot 2中使用Lettuce框架访问Redis的基本步骤和常用操作,包括添加依赖、注入`StringRedisTemplate`实例以及进行字符串、哈希、集合、列表和有序集合的基本操作,文章还提供了一个登录案例,并总结了个人经验,鼓励读者参考和支持
    2026-03-03
  • Redis实战之Lettuce的使用技巧详解

    Redis实战之Lettuce的使用技巧详解

    Lettuce 是 Redis 的一款高级 Java 客户端,与 Jedis 并列成为最热门的客户端之一,目前已成为 SpringBoot 2.0 版本默认的 redis 客户端。本文主要和大家讲讲Lettuce的使用技巧,感兴趣的可以了解一下
    2022-12-12

最新评论