当前位置: 首页 > article >正文

Redis终极入门指南:万字解析帮你从零基础到掌握命令与五大数据结构

目录

命令学习:

一、Redis 基础操作

二、Redis 常用命令

三、五种数据结构及其常用命令

3.1 String(字符串)

3.2 List(列表)

3.3 Set(集合)

3.4 Hash(哈希)

3.5 Zset(有序集合)


 

前言:

   Redis 是一款开源内存数据库,以高性能和多样数据结构广泛应用于缓存和消息队列等场景。本文为新手提供快速入门指南,涵盖通用命令和五大核心数据结构:String、List、Set、Hash 和 Zset 的常见操作,助你迅速上手并应用于项目中。

  之前我们已经下载了并安装了Redis和图形化界面工具,现在我们就开始命令的学习。要是读者还没安装,可以点击后面链接先去安装一下再来学习!安装Redis与图形化界面工具

命令学习:

一、Redis 基础操作

1.测试连接,返回pong表示连接成功

  • 功能:测试与 Redis 服务器的连接状态。
  • 解释:发送 PING 命令,服务器返回 PONG 表示连接成功。
  • 示例
ping

2.Redis默认有16个数据库(DB0~DB15),切换到DB1数据库

  • 功能:切换到指定的 Redis 数据库,默认有 16 个数据库(从 DB0 到 DB15)。
  • 解释:通过 SELECT 命令切换到数据库 DB1。每个客户端连接默认在 DB0,可以通过此命令切换。
  • 示例
select 1

3. 查看当前数据库中键的数量:

  • 功能:返回当前数据库中的键数量。
  • 解释:该命令用于统计当前选择的数据库中存储的键的数量。
  • 示例
DBSIZE

4.设置键 name 的值为 xc:

  • 功能:设置键 name 的值为 xc
  • 解释:将键 name 的值设置为 xc,如果键已存在,则会覆盖原值。
  • 示例
set name xc

5.获取键 username 的值:

  • 功能:获取键 name 的值。
  • 解释:返回键 name 对应的值,如果该键不存在则返回 null
  • 示例
GET name

6.获取所有的键:

  • 功能:获取当前数据库中所有的键。
  • 解释:返回符合给定模式的所有键,* 表示匹配所有键。
  • 示例
KEYS *

7.清空当前数据库:

  • 功能:清空当前数据库中的所有键。
  • 解释:该命令只会清除当前选择的数据库,不影响其他数据库。
  • 示例
FLUSHDB

8.清空所有数据库:

  • 功能:清空 Redis 服务器中的所有数据库。
  • 解释:该命令会清除所有 16 个数据库(DB0~DB15)中的所有数据。
  • 示例
FLUSHALL

 

二、Redis 常用命令

1.查询键是否存在

  • 功能:检查键 name 是否存在。
  • 解释:返回 1 表示键存在,返回 0 表示键不存在。
  • 示例
EXISTS name

2.删除键

  • 功能:删除指定的键 name
  • 解释:删除一个或多个键,删除成功返回被删除键的数量。
  • 示例
DEL name

3.设置键过期时间

  • 功能:为键 name 设置过期时间(以秒为单位)。
  • 解释:此命令将为键 name 设置 10 秒的过期时间,过期后键将被自动删除,这个命令要求事先存在键name。
  • 示例
EXPIRE name 10

4.查看键的剩余过期时间

  • 功能:查看键 name 的剩余过期时间。
  • 解释:返回键的剩余时间(秒),如果键没有过期时间或不存在,则返回 -1-2
  • 示例
TTL name

5.将键从当前数据库移动到另一个数据库

  • 功能:将键 name 从当前数据库移动到数据库 DB1
  • 解释:移动键到指定的数据库,如果目标数据库中已经存在相同键,则移动失败。
  • 示例
MOVE name 1

6.查看键的类型

  • 功能:查看键 name 的值类型。
  • 解释:返回键的类型,如 stringlistset 等,如果键不存在,返回 none
  • 示例
TYPE name

7.重命名键

  • 功能:将键 name 重命名为 new_name
  • 解释:该命令会将现有的键重命名,如果 new_name 已存在,则会覆盖它。
  • 示例
RENAME name new_name

8.随机返回一个键

  • 功能:随机返回当前数据库中的一个键。
  • 解释:该命令从当前数据库中随机返回一个键,如果数据库为空则返回 null
  • 示例
RANDOMKEY

 

三、五种数据结构及其常用命令

3.1 String(字符串)

String 是 Redis 中最常见的数据类型。它不仅可以存储字符串,还能存储数字并进行增减操作。

1.设置字符串值

  • 功能:设置键 name 的值为 xc,如果键已存在,会覆盖原值。
  • 解释:该命令用于设置键的值,无论键之前是否存在。
  • 示例
SET name xc

2.获取字符串值

  • 功能:获取键 name 的值。
  • 解释:返回键 name 存储的值,如果键不存在,则返回 null
  • 示例
GET name

3.拼接字符串

  • 功能:将字符串 study 追加到键 name 的值末尾。
  • 解释:如果键 name 的原值为 xc,执行此命令后,值将变为 xcstudy
  • 示例
APPEND name study

4.获取字符串长度

  • 功能:获取键 name 的值的字节长度。
  • 解释:返回字符串的长度,例如 xcstudy 的长度为 7。
  • 示例
STRLEN name

5.自增键的数值

  • 功能:将键 view 的值增加 1。
  • 解释:该命令仅适用于数值型字符串,如果键不存在,则初始化为 0,然后加 1。
  • 示例
INCR view

6.自减键的数值

  • 功能:将键 view 的值减 1。
  • 解释:如果键不存在,Redis 会将其初始化为 0,再执行减 1 操作。
  • 示例
DECR view

7.按指定值增加键的数值

  • 功能:将键 view 的值增加指定的数值 10
  • 解释:此命令可以按指定的数值增加键的值,适用于数值型字符串。
  • 示例
INCRBY view 10

8.按指定值减少键的数值

  • 功能:将键 view 的值减少指定的数值 10
  • 解释:与 INCRBY 相反,此命令将键的值按指定数值减少。
  • 示例
DECRBY view 10

9.截取字符串的部分内容

  • 功能:获取键 name 的值的部分内容,指定范围为从 0 到 3(包括起止位置)。
  • 解释:返回从索引 0 到 3 的子字符串,例如如果 name 的值为 httstudy,返回 htt
  • 示例
GETRANGE name 0 3

10.替换字符串指定位置的值

  • 功能:从指定的索引位置(此处是 1)开始替换键 name 的值为 yyy
  • 解释:该命令将从字符串的第一个索引位置开始替换部分内容。例如,如果 name 的值是 xcstudy,执行此命令后,值会变为 xyyyudy
  • 示例
SETRANGE name 1 000

11.设置带过期时间的值

  • 功能:设置键 name 的值为 hello,并设置该键的过期时间为 10 秒。
  • 解释:该命令不仅设置键的值,还会为键添加过期时间,超过 10 秒后该键自动删除。
  • 示例
SETEX name 10 hello

12.设置值时,如果键不存在才生效

  • 功能:当且仅当键 title 不存在时,才设置键的值为 redis
  • 解释:此命令用于在键不存在时设置值,避免覆盖已有值。
  • 示例
SETNX title redis

13.一次性设置多个键值

  • 功能:一次性设置多个键值对。
  • 解释:该命令可以同时设置多个键值对,相当于批量操作。
  • 示例
MSET k1 v1 k2 v2 k3 v3

14.一次性获取多个值

  • 功能:一次性获取多个键的值。
  • 解释:可以同时获取多个键的值,返回值的顺序与请求的键顺序一致。
  • 示例
MGET k1 k2 k3

15.获取并更新键的值

  • 功能:获取键 username 的当前值,并将其更新为 new_value
  • 解释:该命令执行原子操作,获取旧值的同时设置新值,返回的是旧值。
  • 示例
GETSET username new_value

 

3.2 List(列表)

List 是一个有序的字符串列表,支持从两端插入和弹出数据。常见的使用场景包括任务队列、消息列表等。

1.从列表左侧插入元素

  • 功能:从列表的左侧插入元素 1
  • 解释:将元素 1 插入到列表 list 的最左端,如果列表不存在,则会创建新列表并插入。
  • 示例
LPUSH list 1

2.从列表右侧插入元素

  • 功能:从列表的右侧插入元素 3。
  • 解释:将元素 3 插入到列表 list 的最右端,如果列表不存在,则会创建新列表并插入。
  • 示例
RPUSH list 3

3.获取列表的所有元素

  • 功能:获取列表 list 中的所有元素。
  • 解释LRANGE 获取从索引 0 到 -1(表示最后一个元素)的所有元素,适用于获取列表的所有内容。
  • 示例
LRANGE list 0 -1

4.移除列表的第一个元素

  • 功能:移除并返回列表 list 的第一个元素。
  • 解释:从列表左侧弹出第一个元素并返回,列表长度减少 1。如果列表为空,则返回 null
  • 示例
LPOP list

5.移除列表的最后一个元素

  • 功能:移除并返回列表 list 的最后一个元素。
  • 解释:从列表右侧弹出最后一个元素并返回,列表长度减少 1。如果列表为空,则返回 nil
  • 示例
RPOP list

6.通过下标获取列表中的某个元素

  • 功能:通过下标获取列表 list 中的某个元素。
  • 解释:返回列表中索引为 0 的元素,索引从 0 开始。如果索引超出范围,返回 null
  • 示例
LINDEX list 0

7.获取列表长度

  • 功能:获取列表 list 的长度。
  • 解释:返回列表中元素的数量,如果列表不存在则返回 0。
  • 示例
LLEN list

8.删除指定个数的某个值

  • 功能:从列表中删除 1 个值为 2 的元素。
  • 解释:从列表左侧开始,删除第一个值为 2 的元素,LREM 命令的第一个参数为删除个数,1 表示删除一个。
  • 示例
LREM list 1 2

9.截取列表中的一部分并覆盖原列表

  • 功能:截取列表 list 中从索引 12 的部分元素,并覆盖原列表。
  • 解释:保留索引 1 到 2 之间的元素,删除其余部分。
  • 示例
LTRIM list 1 2

10.更新列表中某个下标的元素

  • 功能:更新列表 list 中索引 0 处的元素为 new_value
  • 解释:将索引位置 0 的元素更新为 new_value,如果索引超出范围,会返回错误。
  • 示例
LSET list 0 new_value

 

3.3 Set(集合)

Set 是一个无序集合,内部的元素不会重复,常用于数据去重。

1.添加元素到集合中

  • 功能:向集合 set 中添加元素 value1
  • 解释SADD 将元素 value1 添加到集合中,如果该元素已存在,则不执行任何操作。集合中的元素是唯一的,不能重复。
  • 示例
SADD set value1

2.查看集合中的所有元素

  • 功能:查看集合 set 中的所有元素。
  • 解释:返回集合中的所有元素,集合中的元素无序排列。
  • 示例
SMEMBERS set

3.判断集合中是否存在某个元素

  • 功能:判断集合 set 中是否包含元素 value1
  • 解释:如果集合中包含该元素,返回 1,否则返回 0
  • 示例
SISMEMBER set value1

4.从集合中随机抽取一个元素

  • 功能:从集合 set 中随机返回一个元素,但不移除。
  • 解释:该命令从集合中随机选取一个元素并返回,但集合保持不变。
  • 示例
SRANDMEMBER set

5.从集合中移除随机元素

  • 功能:从集合 set 中随机移除并返回一个元素。
  • 解释:该命令从集合中随机移除一个元素并返回,集合大小会减少。
  • 示例
SPOP set

6.移动集合中的某个元素到另一个集合

  • 功能:将元素 value1 从集合 set1 移动到集合 set2
  • 解释:如果元素 value1 存在于集合 set1 中,则将其移到 set2,如果 set2 已包含该元素,则不做重复插入。
  • 示例
SMOVE set1 set2 value1

7.求两个集合的差集

  • 功能:返回集合 set1 中有而 set2 中没有的元素(差集)。
  • 解释:返回存在于 set1 中但不存在于 set2 中的元素集。
  • 示例
SDIFF set1 set2

8.求两个集合的交集

  • 功能:返回两个集合 set1set2 的交集元素。
  • 解释:交集是两个集合中都存在的元素。
  • 示例
SINTER set1 set2

9.求两个集合的并集

  • 功能:返回两个集合 set1set2 的并集元素。
  • 解释:并集是两个集合中所有独立存在的元素集合。
  • 示例
SUNION set1 set2

 

3.4 Hash(哈希)

Hash 是一个键值对集合,适用于存储对象等结构化数据。

1.设置哈希键值对:

  • 功能:为哈希 hash 设置键 key1 的值为 value1
  • 解释:如果哈希 hash 中不存在该键 key1,则创建并赋值;如果存在,则覆盖其值。
  • 示例
HSET hash key1 value1

2.获取哈希键的值

  • 功能:获取哈希 hash 中键 key1 的值。
  • 解释:返回键 key1 对应的值,如果键不存在,则返回 nil
  • 示例
HGET hash key1

3.一次性设置多个哈希键值对

  • 功能:一次性为哈希 hash 设置多个键值对。
  • 解释:该命令可同时设置多个键值对,若键已存在,则覆盖其值。
  • 示例
HMSET hash key1 value1 key2 value2

4.一次性获取多个哈希值

  • 功能:一次性获取哈希 hash 中多个键的值。
  • 解释:返回指定键的值列表,若某个键不存在,则返回 nil
  • 示例
HMGET hash key1 key2

5.获取哈希中的所有键值对

  • 功能:获取哈希 hash 中的所有键值对。
  • 解释:返回哈希中所有键值对,结果为键和值交替排列的列表。
  • 示例
HGETALL hash

6.删除哈希中的指定键

  • 功能:删除哈希 hash 中的指定键 key1
  • 解释:移除哈希中指定的键值对,返回删除成功的数量。
  • 示例
HDEL hash key1

7.获取哈希的键数量

  • 功能:获取哈希 hash 中键的数量。
  • 解释:返回哈希中存储的键数量。
  • 示例
HLEN hash

8.判断哈希中某个键是否存在

  • 功能:判断哈希 hash 中是否存在键 key1
  • 解释:如果键存在,返回 1;如果不存在,返回 0
  • 示例
HEXISTS hash key1

9.增加哈希字段的数值

  • 功能:对哈希 hash 中的字段 field 进行数值增加操作。
  • 解释:将哈希 hash 中字段 field 的值增加 1,如果该字段不存在,则创建并赋值为 1
  • 示例
HINCRBY hash field 1

 

3.5 Zset(有序集合)

Zset 是一个有序集合,每个元素都会关联一个分数,元素按分数从小到大排序。

1.添加元素到有序集合

  • 功能:向有序集合 zset 中添加元素 "first""second",并分别设置分数 12
  • 解释ZADD 将元素按给定的分数插入到有序集合中,如果元素已存在,则更新其分数。有序集合中的元素按分数排序。
  • 示例
ZADD zset 1 "first" 2 "second"

2.获取有序集合中所有元素

  • 功能:获取有序集合 zset 中所有元素。
  • 解释ZRANGE 返回从索引 0-1 的所有元素,按分数从低到高排列。
  • 示例
ZRANGE zset 0 -1

3.按分数范围获取有序集合中的元素

  • 功能:按分数范围获取有序集合 zset 中的元素,分数范围从 010
  • 解释:返回分数在 010 之间的元素,按分数从低到高排列。
  • 示例
ZRANGEBYSCORE zset 0 10

4.移除有序集合中的某个元素

  • 功能:移除有序集合 zset 中的元素 "first"
  • 解释:删除有序集合中指定的元素,如果元素不存在则不执行操作。
  • 示例
ZREM zset "first"

5.查看有序集合的元素个数

  • 功能:查看有序集合 zset 中的元素个数。
  • 解释:返回有序集合中元素的数量。
  • 示例
ZCARD zset

6.按分数从高到低获取元素

  • 功能:按分数从高到低获取有序集合 zset 中的所有元素。
  • 解释:返回有序集合中从索引 0-1 的元素,按分数从高到低排序。
  • 示例
ZREVRANGE zset 0 -1

总结

   通过本文,你已经掌握了 Redis 的基础操作、通用命令以及五大核心数据结构的常用命令。无论是字符串操作、列表管理、集合去重、哈希存储还是有序集合的排序,都能帮助你在不同场景中灵活运用 Redis。Redis 不仅速度快,功能强大,还能通过丰富的数据类型满足各种应用需求。希望这篇文章能够为你提供一条清晰的学习路径,帮助你快速上手 Redis!

   这篇万字教程真的写了好久。。。带大家入门了Redis的基本命令使用,要是大家还想掌握Redis的更深度使用,我会尽快写的,如果这篇文章有帮到大家,那请多多点赞收藏吧!你的支持就是我的最大动力!!!


http://www.kler.cn/news/334622.html

相关文章:

  • ARM Assembly 6: Shift 和 Rotate
  • SQL进阶技巧:如何优雅求解指标累计去重问题?
  • SpringBoot在线教育系统:构建与优化
  • react-问卷星项目(6)
  • CMake教程:第一步:一个基本的起点
  • mysql中 and or not的执行顺序
  • 解决Vue应用中遇到路由刷新后出现 404 错误
  • 高等数学 第二讲 数列极限_收敛数列_海涅定理_单调有界准则
  • SkyWalking 高可用
  • Redis SpringBoot项目学习
  • 图文深入理解Oracle Network配置管理(一)
  • Windows系统编程(三)进程与线程二
  • sentinel原理源码分析系列(一)-总述
  • Centos Stream 9备份与恢复、实体小主机安装PVE系统、PVE安装Centos Stream 9
  • C++面试速通宝典——9
  • rabbitMq-----消费者管理模块
  • Perforce静态分析工具2024.2新增功能:Helix QAC全新CI/CD集成支持、Klocwork分析引擎改进和安全增强
  • 使用指标进行量化交易时,有哪些需要注意的风险点呢
  • Spring Data JPA中的锁机制
  • CSP-J/S 复赛算法 区间动态规划