目录
前言:
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
的值类型。 - 解释:返回键的类型,如
string
、list
、set
等,如果键不存在,返回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
中从索引1
到2
的部分元素,并覆盖原列表。 - 解释:保留索引 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.求两个集合的交集:
- 功能:返回两个集合
set1
和set2
的交集元素。 - 解释:交集是两个集合中都存在的元素。
- 示例:
SINTER set1 set2
9.求两个集合的并集:
- 功能:返回两个集合
set1
和set2
的并集元素。 - 解释:并集是两个集合中所有独立存在的元素集合。
- 示例:
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"
,并分别设置分数1
和2
。 - 解释:
ZADD
将元素按给定的分数插入到有序集合中,如果元素已存在,则更新其分数。有序集合中的元素按分数排序。 - 示例:
ZADD zset 1 "first" 2 "second"
2.获取有序集合中所有元素:
- 功能:获取有序集合
zset
中所有元素。 - 解释:
ZRANGE
返回从索引0
到-1
的所有元素,按分数从低到高排列。 - 示例:
ZRANGE zset 0 -1
3.按分数范围获取有序集合中的元素:
- 功能:按分数范围获取有序集合
zset
中的元素,分数范围从0
到10
。 - 解释:返回分数在
0
到10
之间的元素,按分数从低到高排列。 - 示例:
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