目录
redis客户端
redis的自带的命令行客户端
docker的命令行客户端
常用命令
Redis数据结构介绍
1. 字符串(String)
2. 列表(List)
3. 集合(Set)
4. 哈希(Hash)
5. 有序集合(Sorted Set / ZSet)
redis通用命令
Redis命令-String命令
Redis命令-Key的层级结构
Redis命令-哈希命令
Redis命令-List命令
Redis-Set命令
Redis命令-SortedSet类型(有序集合)
redis客户端
redis的自带的命令行客户端
输入
redis-cli
就可以其启动,看到主机地址就说明启动成功

docker的命令行客户端
在启动的容器里exec页面
bash命令 的核心作用是进入容器的完整 Linux 命令行环境,获得更全面的操作权限。
| bash | 容器的完整 Linux 命令行 | 运行 redis-cli + 所有 Linux 基础命令 | 排查容器 / Redis 问题、查看容器内文件 |
| redis-cli | 直接进入 Redis 客户端界面 | 只能执行 Redis 相关命令 | 快速操作 Redis 数据(日常使用更多) |
输入
bash
redis-cli

如图所示就进入了命令行界面
也可以用图形化界面:如Another Redis Desktop Manager
常用命令
具体更多详细可以参考官方文档:
https://redis.io/docs/latest/commands/redis-8-0-commands/
也可以在exec命令行输入help 命令查看对应的指令

其中我们可以通过help 命令来查看不同组的命令

help <group>这是用来查看某一类命令的完整列表。你需要把 <group> 替换成 Redis 的命令组名称,比如 string、list、set。举个例子,输入 help string 就能看到所有和字符串相关的命令。
help <command>这是用来查看单个命令的详细用法。你需要把 <command> 替换成具体的命令名,比如 GET、SET、LPUSH、KEY。举个例子,输入 help GET 就能看到 GET 命令的作用、参数格式和示例。
help @<topic>这是 Redis 提供的主题式帮助,用来查看某个功能主题下的所有命令。你需要把 <topic> 替换成主题名称,比如 @admin(管理类命令)、@pubsub(发布订阅类命令)。
help tab这个命令是用来列出所有可用的帮助主题和命令组的,相当于一个帮助目录,方便你查找需要的内容。
quit这个很简单,就是退出 Redis 命令行客户端。
图形化工具也可以通过一些提示来查看

Redis数据结构介绍
1. 字符串(String)
- 特点:最基础的键值类型,可存储文本、数字或二进制数据,最大支持 512MB。
- 常用命令:SET、GET、INCR、APPEND
- 典型场景:缓存用户信息、存储验证码、计数(如文章阅读量)。
2. 列表(List)
- 特点:有序字符串集合,底层是双向链表,两端操作效率极高。
- 常用命令:LPUSH、RPUSH、LPOP、RPOP、LRANGE
- 典型场景:实现消息队列、时间线(如用户动态流)、任务队列。
3. 集合(Set)
- 特点:无序、唯一的字符串集合,支持交集、并集、差集等集合运算。
- 常用命令:SADD、SMEMBERS、SISMEMBER、SINTER
- 典型场景:去重数据(如用户点赞的文章)、共同好友推荐、抽奖系统。
4. 哈希(Hash)
- 特点:键值对的集合,适合存储对象,可单独更新对象的某个字段。
- 常用命令:HSET、HGET、HGETALL、HINCRBY
- 典型场景:存储用户信息(如 user:1001 下的 name、age、email)、商品属性。
5. 有序集合(Sorted Set / ZSet)
- 特点:类似集合,但每个元素关联一个分数(score),按分数排序,元素唯一但分数可重复。
- 常用命令:ZADD、ZRANGE、ZREVRANGE、ZSCORE
- 典型场景:排行榜(如游戏积分、热帖排名)、带权重的任务队列。
redis通用命令
通用指令是部分数据类型的,都可以使用的指令,常见的有:
-
KEYS:查看符合模板的所有key
-
DEL:删除一个指定的key
-
EXISTS:判断key是否存在
-
EXPIRE:给一个key设置有效期,有效期到期时该key会被自动删除,要先存在key
-
TTL:查看一个KEY的剩余有效期
提前设置一个为小明的key,-2代表已经失效

Redis命令-String命令
String类型,也就是字符串类型,是Redis中最简单的存储类型。
其value是字符串,不过根据字符串的格式不同,又可以分为3类:
-
string:普通字符串
-
int:整数类型,可以做自增.自减操作
-
float:浮点类型,可以做自增.自减操作
String的常见命令有:
-
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类型的键值对,并且指定有效期
Redis命令-Key的层级结构
如果同一个key名称代表不同的含义,比如id 可以代表用户的id也可以代表商品的id,那我们就要建立层级结构
Redis的key允许有多个单词形成层级结构,多个单词之间用':'隔开,格式如下:
项目名:业务:类型(数据结构类型或业务数据类型):id
数据结构类型直接用 Redis 的数据结构来命名,比如 string、list、hash、set、zset。示例:heima:user:hash:1001这个键名表明,它属于 heima 项目、user 业务模块,是一个 hash 结构,ID 是 1001。
业务数据类型用业务上的实体名称来命名,比如 user、order、product、article。示例:heima:user:info:1001这个键名表明,它属于 heima 项目、user 业务模块,存储的是用户的 info(信息),ID 是 1001。
创建一个层级结构heima:user:小明作为key
![]()
层级展示:

注意:heima:user:小明和小明不是同一个key

Redis命令-哈希命令
存储结构

Hash类型的常见命令
-
HSET key field value:添加或者修改hash类型key的field的值
-
HGET key field:获取一个hash类型key的field的值
-
HMSET:批量添加多个hash类型key的field的值
-
HMGET:批量获取多个hash类型key的field的值
-
HGETALL:获取一个hash类型的key中的所有的field和value
-
HKEYS:获取一个hash类型的key中的所有的field
-
HINCRBY:让一个hash类型key的字段值自增并指定步长
-
HSETNX:添加一个hash类型的key的field值,前提是这个field不存在,否则不执行
注意:所有的自增只自增一次不会随着时间推移自增

Redis命令-List命令
Redis中的List类型与Java中的LinkedList类似,可以看做是一个双向链表结构。既可以支持正向检索和也可以支持反向检索。
特征也与LinkedList类似:
-
有序
-
元素可以重复
-
插入和删除快
-
查询速度一般
常用来存储一个有序数据,例如:朋友圈点赞列表,评论列表等

List的常见命令有:
-
LPUSH key element … :向列表左侧插入一个或多个元素
-
LPOP key:移除并返回列表左侧的第一个元素,没有则返回null
-
RPUSH key element … :向列表右侧插入一个或多个元素
-
RPOP key:移除并返回列表右侧的第一个元素
-
LRANGE key star end:返回一段角标范围内的所有元素
-
BLPOP和BRPOP:与LPOP和RPOP类似,只不过在没有元素时等待指定时间,而不是直接返回null
使用LRANGE时,注意角标,如果是LPUSH,那么角标0会是新元素,RPUSH角标0不变 角标从队列最左侧的元素开始,如图角标0是d,1是c , 2 是d

BLPOP这种可以查看help,需要设计一个超时时间,所以在没有元素时需要等待一下,再返回null

Redis-Set命令
Redis的Set结构与Java中的HashSet类似,可以看做是一个value为null的HashMap。因为也是一个hash表,因此具备与HashSet类似的特征:
-
无序
-
元素不可重复
-
查找快
-
支持交集.并集.差集等功能
Set类型的常见命令
-
SADD key member … :向set中添加一个或多个元素
-
SREM key member … : 移除set中的指定元素
-
SCARD key: 返回set中元素的个数
-
SISMEMBER key member:判断一个元素是否存在于set中
-
SMEMBERS:获取set中的所有元素
-
SINTER key1 key2 … :求key1与key2的交集
-
SDIFF key1 key2 … :求key1与key2的差集
-
SUNION key1 key2 ..:求key1和key2的并集

并且集合中的元素是无序的

例如两个集合:s1和s2:

求交集:SINTER s1 s2
求s1与s2的不同:SDIFF s1 s2

Redis命令-SortedSet类型(有序集合)
Redis的SortedSet是一个可排序的set集合,与Java中的TreeSet有些类似,但底层数据结构却差别很大。SortedSet中的每一个元素都带有一个score属性,可以基于score属性对元素排序,底层的实现是一个跳表(SkipList)加 hash表。
SortedSet具备下列特性:
-
可排序
-
元素不重复
-
查询速度快
因为SortedSet的可排序特性,经常被用来实现排行榜这样的功能。
SortedSet的常见命令有:
-
ZADD key score member:添加一个或多个元素到sorted set ,如果已经存在则更新其score值
-
ZREM key member:删除sorted set中的一个指定元素
-
ZSCORE key member : 获取sorted set中的指定元素的score值
-
ZRANK key member:获取sorted set 中的指定元素的排名
-
ZCARD key:获取sorted set中的元素个数
-
ZCOUNT key min max:统计score值在给定范围内的所有元素的个数
-
ZINCRBY key increment member:让sorted set中的指定元素自增,步长为指定的increment值
-
ZRANGE key min max:按照score排序后,获取指定排名范围内的元素
-
ZRANGEBYSCORE key min max:按照score排序后,获取指定score范围内的元素
-
ZDIFF.ZINTER.ZUNION:求差集.交集.并集
注意:所有的排名默认都是升序,如果要降序则在命令的Z后面添加REV即可,例如:
-
升序获取sorted set 中的指定元素的排名:ZRANK key member
-
降序获取sorted set 中的指定元素的排名:ZREVRANK key memeber
存储形式(有序):




