Redis从零到精通第二篇:redis常见的命令

目录

redis客户端

redis的自带的命令行客户端

docker的命令行客户端

常用命令

Redis数据结构介绍

[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命令-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 的命令组名称,比如 stringlistset。举个例子,输入 help string 就能看到所有和字符串相关的命令。

help <command> 这是用来查看单个命令的详细用法。你需要把 <command> 替换成具体的命令名,比如 GETSETLPUSH、KEY。举个例子,输入 help GET 就能看到 GET 命令的作用、参数格式和示例。

help @<topic> 这是 Redis 提供的主题式帮助,用来查看某个功能主题下的所有命令。你需要把 <topic> 替换成主题名称,比如 @admin(管理类命令)、@pubsub(发布订阅类命令)。

**help tab**这个命令是用来列出所有可用的帮助主题和命令组的,相当于一个帮助目录,方便你查找需要的内容。

**quit**这个很简单,就是退出 Redis 命令行客户端。

图形化工具也可以通过一些提示来查看

Redis数据结构介绍

1. 字符串(String)

  • 特点:最基础的键值类型,可存储文本、数字或二进制数据,最大支持 512MB。
  • 常用命令SETGETINCRAPPEND
  • 典型场景:缓存用户信息、存储验证码、计数(如文章阅读量)。

2. 列表(List)

  • 特点:有序字符串集合,底层是双向链表,两端操作效率极高。
  • 常用命令LPUSHRPUSHLPOPRPOPLRANGE
  • 典型场景:实现消息队列、时间线(如用户动态流)、任务队列。

3. 集合(Set)

  • 特点:无序、唯一的字符串集合,支持交集、并集、差集等集合运算。
  • 常用命令SADDSMEMBERSSISMEMBERSINTER
  • 典型场景:去重数据(如用户点赞的文章)、共同好友推荐、抽奖系统。

4. 哈希(Hash)

  • 特点:键值对的集合,适合存储对象,可单独更新对象的某个字段。
  • 常用命令HSETHGETHGETALLHINCRBY
  • 典型场景 :存储用户信息(如 user:1001 下的 nameageemail)、商品属性。

5. 有序集合(Sorted Set / ZSet)

  • 特点:类似集合,但每个元素关联一个分数(score),按分数排序,元素唯一但分数可重复。
  • 常用命令ZADDZRANGEZREVRANGEZSCORE
  • 典型场景:排行榜(如游戏积分、热帖排名)、带权重的任务队列。

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 的数据结构来命名,比如 stringlisthashsetzset。示例:heima:user:hash:1001这个键名表明,它属于 heima 项目、user 业务模块,是一个 hash 结构,ID 是 1001。

业务数据类型 用业务上的实体名称来命名,比如 userorderproductarticle。示例: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

存储形式(有序):

相关推荐
多多*2 小时前
Mysql数据库相关 事务 MVCC与锁的爱恨情仇 锁的层次架构 InnoDB锁分析
java·数据库·windows·sql·oracle·面试·哈希算法
大数据在线2 小时前
技术的终极善意:抹平集中式和分布式边界
数据库·信创·pingcap·国产数据库·平凯数据库
晓13132 小时前
第六章:Redis分布式缓存
redis·nosql
Henry Zhu1232 小时前
数据库(三):关系代数
数据库
历程里程碑2 小时前
Linux 16 环境变量
linux·运维·服务器·开发语言·数据库·c++·笔记
流㶡2 小时前
mysql学习笔记之创建表、导入导出数据
数据库·mysql
Monkey的自我迭代2 小时前
实战项目数据桥agent复盘
数据库·python·oracle
赵锦川2 小时前
Oracle数据库序列的创建
数据库
柱子jason3 小时前
使用IOT-Tree对接工业现场PLC并把采集数据记录到关系数据库中
数据库·物联网·plc·工业物联网·工业自动化·iot-tree·生产线配套