目录
[1. 字符串(String)](#1. 字符串(String))
[2. 列表(List)](#2. 列表(List))
[3. 集合(Set)](#3. 集合(Set))
[4. 哈希(Hash)](#4. 哈希(Hash))
[5. 有序集合(Sorted Set / ZSet)](#5. 有序集合(Sorted Set / ZSet))
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
常用命令
具体更多详细可以参考官方文档:
也可以在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、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
存储形式(有序):
