Redis 命令

通用命令

Redis 的通用命令是指不特定于某种数据结构,可以用于操作几乎所有键的命令

输入help @ generic可以查看所有redis通用命令

复制代码
help @ generic

还可以通过" help [命令名称]"的方式查看命令使用方法

redis的通用命令很多,我们其实不需要把它们所有都记住,只要记住几个常见命令,学会使用help查看命令就行了。

常用命令

  • keys: 找到符合所有模板的Key

    #查询所有键
    keys *
    #查询首字母为n的键
    keys *a

简单直接,但是这种查询方式是模糊匹配,会阻塞 Redis 服务器,直到所有键扫描完毕。如果数据库有几百万个键,它会阻塞好几秒,导致服务不可用

  • del:删除一个指定的key

返回值就是删除了多少个key

  • Exists:判断key是否存在
  • Expire:给一个key设置有效期,到期自动删除

Redis把数据存在内存中,如果不及时删除会导致内存占用过多,常用在验证码(5分钟过期)、登录状态(30分钟过期)、限流计数器(1分钟重置)的场景

复制代码
expire key second

String类型命令

所有的键(Key)都是字符串类型,而值(Value)可以是字符串、整数或浮点数

命令名称 命令功能描述
SET 添加或者修改已经存在的一个 String 类型的键值对
GET 根据 key 获取 String 类型的 value
MSET 批量添加多个 String 类型的键值对
MGET 根据多个 key 获取多个 String 类型的 value
INCR 让一个整型的 key 自增 1
INCRBY 让一个整型的 key 自增并指定步长,例如:incrby num 2 让 num 值自增 2
INCRBYFLOAT 让一个浮点类型的数字自增并指定步长
SETNX 添加一个 String 类型的键值对,前提是这个 key 不存在,否则不执行
SETEX 添加一个 String 类型的键值对,并且指定有效期

Hash类型命令

Hash类型是一个包含多个键值对的键值对集合

  • string类型的key字符串

  • hash类型的key是键值对

hash结构可以对对象中每个字段进行单独的CRUD

命令名称 命令功能描述
HSET 添加或者修改 hash 类型 key 的 field 的值
HGET 获取一个 hash 类型 key 的 field 的值
HMSET 批量添加多个 hash 类型 key 的 field 的值
HMGET 批量获取多个 hash 类型 key 的 field 的值
HGETALL 获取一个 hash 类型的 key 中的所有的 field 和 value
HKEYS 获取一个 hash 类型的 key 中的所有的 field
HVALS 获取一个 hash 类型的 key 中的所有的 value
HINCRBY 让一个 hash 类型 key 的字段值自增并指定步长
HSETNX 添加一个 hash 类型的 key 的 field 值,前提是这个 field 不存在,否则不执行

HSET

HSET不仅可以添加数据,还可以修改数据

复制代码
#hset key field value
hest user name jack

HGET

复制代码
hget key field

List类型命令

List类型类似于双向链表(支持正向检索和反向检索)

  • 有序

  • 元素可以重复

  • 插入和删除速度快

|-----------|---------------------------|
| LPUSH | 向列表左侧(头部) 插入一个或多个元素 |
| RPUSH | 向列表右侧(尾部) 插入一个或多个元素 |
| LPOP | 移除并返回列表左侧(头部) 的第一个元素 |
| RPOP | 移除并返回列表右侧(尾部) 的第一个元素 |
| BLPOP | 从多个列表中,左侧阻塞式弹出元素(队列为空时等待) |
| BRPOP | 从多个列表中,右侧阻塞式弹出元素 |
| LRANGE | 获取列表指定索引范围内的元素(支持负数索引) |
| LINDEX | 通过索引获取列表中的单个元素 |
| LLEN | 获取列表长度(元素个数) |
| LTRIM | 保留指定范围内的元素,其余全部删除 |
| LSET | 通过索引设置列表中元素的值 |
| LINSERT | 在指定元素(pivot)的前/后插入新元素 |

LPUSH

复制代码
lpush users "post1" "post2" "post3" 
#数据存储的格式为"post3" "post2" "post1"

List结构模拟栈

栈的特点是先进后出,只需要push和pop的在同一边就行了(lpush+lpop)

List结构模拟队列

队列的特点是先进先出,只需要push和pop的在相反一边就行了(lpush+rpop)

Set类型命令

Set 类型是一个 无序唯一 的字符串集合

  • 无序

  • 元素不可重复

  • 查找快

命令及语法 功能特征 详细说明
SADD key member ... 向 set 中添加一个或多个元素 如果元素已存在则忽略;返回成功添加的新元素个数。
SREM key member ... 移除 set 中的指定元素 如果元素不存在则忽略;返回成功移除的元素个数。
SCARD key 返回 set 中元素的个数 获取集合的基数(长度);若 key 不存在则返回 0
SISMEMBER key member 判断一个元素是否存在于 set 中 存在返回 1,不存在或 key 不存在返回 0
SMEMBERS key 获取 set 中的所有元素 返回集合中的所有成员(注意:SMEMBERS 后面通常也需要跟对应的 key)。
SINTER key1 key2 求key1、key2的交集
SDIFF key1 key2 求key1与key2的差集
SUNION key1 key2 求key1与key2的并集

SADD

复制代码
SADD fruits "apple" "banana" "orange"

SISMEMBER

复制代码
SISMEMBER fruit "apple"

Sorted set命令类型

sorted set是一个可排序的集合类型,里面每一个元素都有一个score属性,可以根据元素的score属性对元素进行排序

|-----------------------|--------------------------------------------------|
| ZADD key score member | 添加一个或多个元素到 sorted set,如果元素已经存在,则更新其 score 值。 |
| ZREM key member | 删除 sorted set 中的一个指定元素。 |
| ZSCORE key member | 获取 sorted set 中的指定元素的 score 值。 |
| ZRANK key member | 获取 sorted set 中的指定元素的排名(按 score 从低到高排列,索引从 0 开始) |
| ZCARD key | 获取 sorted set 中的元素总个数。 |

相关推荐
小江的记录本2 小时前
【Java基础】Java 8-21新特性:JDK21 LTS:虚拟线程、模式匹配switch、结构化并发、序列集合(附《思维导图》+《面试高频考点清单》)
java·数据库·python·mysql·spring·面试·maven
189228048613 小时前
NY382固态MT29F32T08GSLBHL8-24QM:B
大数据·服务器·人工智能·科技·缓存
June`3 小时前
多线程redis下如何解决aof重写和rdb持久化的数据一致性问题
数据库·redis·缓存
二宝哥3 小时前
离线安装maven
java·数据库·maven
SZLSDH3 小时前
场景适配论 | 数字孪生IOC建设中渲染技术与智能体能力的协同逻辑
前端·数据库·ai·数字孪生·数据可视化·智能体
这个DBA有点耶3 小时前
SQL改写实战:子查询、CTE、窗口函数性能对比
数据库·mysql·性能优化
@我漫长的孤独流浪3 小时前
数据库完整性约束全解析:从理论到实践
数据库
l1t4 小时前
DeepSeek总结的 DuckDB 1.5.3:并非普通的补丁版本
数据库·duckdb
云商直通车4 小时前
华为云ECS购买与配置超详细教程
服务器·数据库·华为云