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

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

时间:2024-10-06 19:47:25浏览次数:3  
标签:返回 终极 name 示例 元素 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的更深度使用,我会尽快写的,如果这篇文章有帮到大家,那请多多点赞收藏吧!你的支持就是我的最大动力!!!

标签:返回,终极,name,示例,元素,Redis,列表,集合,数据结构
From: https://blog.csdn.net/2301_77613763/article/details/142719188

相关文章

  • 搭建Redis“主-从-从”模式集群并使用 RedisTemplate 实现读写分离
    一、理论相关我们知道,Redis具有高可靠性,其含义包括:数据尽量少丢失-AOF和RDB服务尽量少中断-增加副本冗余量,将一份数据同时保存在多个实例上,即主从库模式Redis主从库模式-保证数据副本的一致(读写分离):读操作:主库、从库都可以接收写操作:首先到主库执行,然后,主库将写......
  • 数据结构——栈和队列
    数据结构——栈和队列文章目录数据结构——栈和队列一、栈1.概念2.结构这里我们选择数组作为栈的底层结构。3.栈的实现3.1初始化3.2销毁3.3入数据3.4出数据3.5取栈顶元素3.6获取栈中有效元素个数4.完整代码4.1.Stack.h4.2.Stack.c4.3.test.c二、队列1.概念2.结构这......
  • 宝塔开启Redis高速缓存功能方法
    Redis是一种高性能的键值存储系统,具有多种优势,适用于网站缓存场景。以下是Redis的主要优点:多数据结构支持:Redis支持简单的键值对(K/V)类型的数据。还支持列表(List)、集合(Set)、有序集合(ZSet)和哈希表(Hash)等多种数据结构。主从模式支持:Redis支持主从复制模式,可以轻松实......
  • Redis数据类型, Redis主从哨兵和集群(将数据导入集群) ubuntu使用
    2.5Redis常用命令2.5.1INFO显示当前节点redis运行状态信息(可以做监控用)#列出所有127.0.0.1:6379>info#列出具体块127.0.0.1:6379>infoMemory2.5.3SELECT切换数据库,相当于在MySQL的USEDBNAME指令注意:在Rediscluster模式下不支持多个数据库,会出现下......
  • Redis安装管理, RDB, AOF ubuntu使用
    1.1Redis基础redis单线程处理用户请求,不用加锁。其他线程做别的工作1.2Redis安装Ubuntu安装Redis范例:基于官方仓库包安装(可以安装最新版本)#官方地址https://redis.io/docs/install/install-redis/install-redis-on-linux/#导入key[root@ubuntu2204~]#curl-......
  • Redisson 3.37.0 发布,官方推荐的 Redis 客户端
    Redisson3.37.0发布,官方推荐的Redis客户端来源:OSCHINA编辑: 白开水不加糖2024-10-0411:38:36 0Redisson3.37.0 现已发布,这是一个Java编写的Redis客户端,具备驻内存数据网格(In-MemoryDataGrid)功能,并获得了Redis的官方推荐。此版本更新内容如下:F......
  • django + redis + celery 异步任务
    目录结构E:.│db.sqlite3│Dockerfile│manage.py│requirements.txt│├─celery_tasks#自定义一个celery的工作目录││config.py#celery配置文件││__init__.py│││├─sms│tasks.py#worker任务│__init__.py│......
  • 八、Redis key空间通知
    redis的key空间通知是实时监控Redis键和值的更改。那什么是key空间通知呢?当客户端执行一些命令,比如setnameTom,会创建或更新key。此时Redis服务器会将这些事件发布到通道中,客户端可以通过subscribe通道,以便接收以某种方式影响Redis数据集的事件。如果发布/订阅客户端断开连接,然......
  • 历经十年/头发都快掉光/秘钥生成器终极版/机器码/到期功能限制/运行时间限制/日期防篡
    一、项目介绍1.0前言说明标题一点都不夸张,从第一版的秘钥生成器到今天这个版本,确实经历了十年的时间,最初的版本做的非常简陋,就是搞了个异或加密,控制运行时间,后面又增加设备数量的控制,然后就是到期时间的限制。这种有个巨大缺陷就是可复制性,如果将授权的秘钥文件,拷贝到其他电脑......
  • 七、Redis之sorted set
    sortedset也是Redis中常用的类型。可以用来解决热搜,排名前十等问题。ZADDZADDkey[NX|XX][GT|LT][CH][INCR]scoremember[scoremember...]zadd将多个分数和元素对添加到sortedset中。还有些选项影响了zadd的行为:XX:仅更新已存在的元素。不要添加新元素。NX:只添加......