Redis基础篇——Redis常见命令及数据类型详解

文章目录

  • 1. Redis常见命令
  • 2. Redis数据结构介绍
  • 3. 通用命令
    • KEYS
    • DEL
    • EXISTS
    • EXPIRE
    • TTL
  • 4. Redis 命令类型
    • 4.1 String 类型
      • String 类型常见命令
      • key的层级格式
    • 4.2 Hash 类型
      • Hash 类型常用命令
    • 4.3 List 类型
      • List 类型的常见命令
    • 4.4 Set 类型
      • Set 类型的常见命令
    • 4.5 SortSet 类型
      • SortedSet 类型的常见命令

1. Redis常见命令

我们可以通过Redis的中文文档来学习各种命令:Redis官方文档
我们也可以通过菜鸟教程官网来学习:菜鸟教程——Redis

2. Redis数据结构介绍

Redis 是一个 key-value 的数据库,key 一般是 String 类型,不过 value 的类型多种多样

Redis基础篇——Redis常见命令及数据类型详解_第1张图片

3. 通用命令

通用命令是指部分数据类型的,都可以使用的指令,常见的有如下所示:

Redis基础篇——Redis常见命令及数据类型详解_第2张图片

可以通过 help[command] (command命令名称) 查看一个命令的具体用法,例如:

Redis基础篇——Redis常见命令及数据类型详解_第3张图片

KEYS

查看符合模板的所有key,不建议在生产环境设备上使用

Redis基础篇——Redis常见命令及数据类型详解_第4张图片

DEL

删除一个指定的 key

我们先批量插入三组数据 MSET 命令批量插入

在这里插入图片描述

我们通过 keys * 命令可以查看我们的 key

Redis基础篇——Redis常见命令及数据类型详解_第5张图片

现在我们来做一个删除操作,通过 DEL key 如下:

在这里插入图片描述

删除成功,删除了三条数据,这里虽然我们删除的是4条数据,但是本身我们只有三条。

EXISTS

判断 key 是否存在

我们先通过key *查看一下 所有的 key, 在通过EXISTS去查看 key 是否存在,如图:

Redis基础篇——Redis常见命令及数据类型详解_第6张图片

EXPIRE

给一个 key,设置有效期,有效期到期时, key 会被自动删除

Redis基础篇——Redis常见命令及数据类型详解_第7张图片

TTL

查看一个KEY的剩余有效期

Redis基础篇——Redis常见命令及数据类型详解_第8张图片

4. Redis 命令类型

4.1 String 类型

String 类型,也就是字符串类型,是 Redis 中最简单的存储类型

其 value 是字符串,不过根据字符串的格式不同,又可以分为3类:

  • String: 普通字符串
  • int : 整数类型,可以做自增,自减操作
  • float :浮点类型,可以做自增,自减操作

Redis基础篇——Redis常见命令及数据类型详解_第9张图片

不管是哪种格式,底层都是字节数组形式存储,只不过是编码方式不同。字符串类型的最大空间不能超过512m。

String 类型常见命令

Redis基础篇——Redis常见命令及数据类型详解_第10张图片

SET

添加或者修改已经存在的一个 String 类型的键值对

Redis基础篇——Redis常见命令及数据类型详解_第11张图片
GET

根据 key 获取 String 类型 的 value

Redis基础篇——Redis常见命令及数据类型详解_第12张图片
MSET

批量添加多个 String 类型的键值对

Redis基础篇——Redis常见命令及数据类型详解_第13张图片

MGET

根据多个 key 获取 多个 String 类型的 value

Redis基础篇——Redis常见命令及数据类型详解_第14张图片

INCR

让一个整形的 key 自增

Redis基础篇——Redis常见命令及数据类型详解_第15张图片
INCRBY

让一个整形的 key 自增并指定步长(自增的数)

Redis基础篇——Redis常见命令及数据类型详解_第16张图片

INCRBYFLOAT

让一个浮点类型的数字自增并指定步长

Redis基础篇——Redis常见命令及数据类型详解_第17张图片

SETNX

添加一个 String 类型的键值对,前提是这个 key 不存在,否则不执行

Redis基础篇——Redis常见命令及数据类型详解_第18张图片

SETEX

添加一个 String 类型的键值对,并且指定有效期

Redis基础篇——Redis常见命令及数据类型详解_第19张图片

key的层级格式

tips:

如果我们需要存储用户,商品信息到 redis,有一个用户 id 是 1,有一个 商品 id 恰好 也是 1,两个 id 一样,都存入 redis 岂不是产生冲突?如何解决呢-?

Redis 的 key 允许有多个单词形成层级结构,多个单词之间用 冒号 “:” 隔开,如下

项目名:业务名:类型:id

这个格式并非固定,也可以根据自己的需求来删除或者添加词条。

例如:我们的项目叫做 heima,有 user 和 product 两种不同类型的数据,我们可以这样定义 key :

user 相关的 key : heima:user:1
product 相关的 key:heima:product:1

如果 Value 是一个 Java 对象,例如一个 User 对象,则可以将对象序列化为 JSON 字符串后存储:

在这里插入图片描述

存储如下:

Redis基础篇——Redis常见命令及数据类型详解_第20张图片

4.2 Hash 类型

Hash 类型,也叫散列,其 Value 是一个无序字典,类似于 Java中的 HashMap 结构。

  • Hash 结构可以将对象中的每个字段独立存储,可以针对单个字段做 CRUD
    Redis基础篇——Redis常见命令及数据类型详解_第21张图片

Hash 类型常用命令

Redis基础篇——Redis常见命令及数据类型详解_第22张图片

  • HSET key field value 添加或者修改hash类型key的field的值
  • HGET key field 获取一个hash类型key的field的值
  • HMSET hmset 和 hset 效果相同 ,4.0之后hmset可以弃用了
  • HMGET 批量获取多个hash类型key的field的值
  • HGETALL 获取一个hash类型的key中的所有的field和value
  • HKEYS 获取一个hash类型的key中的所有的field
  • HVALS 获取一个hash类型的key中的所有的value
  • HINCRBY 让一个hash类型key的字段值自增并指定步长
  • HSETNX 添加一个hash类型的key的field值,前提是这个field不存在,否则不执行

4.3 List 类型

Redis 中的 List 类型与 Java 中的 LinkedList 类似,可以看做是一个双向链表结构,既可以支持正向检索和也可以支持 反向检索

特征也与 LinkedList 类似 :

  • 有序
  • 元素可以重复
  • 插入和删除快
  • 查询速度一般

List 类型的常见命令

Redis基础篇——Redis常见命令及数据类型详解_第23张图片

扩展

如何利用 List 结构模拟一个栈?

  • 入口(LPUSH)和出口(LPOP)在同一边

如何利用 List 结构模拟一个队列?

  • 入口和出口不在同一边

如何利用 List 结构模拟一个阻塞队列?

  • 入口和出口在不同边
  • 出队时采用 BLPOP 或 BRPOP

我们把栈和队列想象成喝酒,栈就是喝酒喝多了,想吐,那么就是 从嘴里喝进去又从嘴里吐出来,所以入口和出口在同一边,队列就相当于喝多了,但是不想吐,上厕所,那么出口和入口没在同一边

4.4 Set 类型

Redis 的 Set 结构 与 Java 中的 HashSet 类似,可以看做是一个 Value 为 null 的 HashMap,因为也是一个 hash 表,因此具备与 HashSet类似的特征:

  • 无序
  • 元素不可重复
  • 查找快
  • 支持交集,并集,差集等功能

Set 类型的常见命令

Redis基础篇——Redis常见命令及数据类型详解_第24张图片

  • 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的并集

交集,差集,并集图示:

Redis基础篇——Redis常见命令及数据类型详解_第25张图片

4.5 SortSet 类型

Redis 的 SortedSet 是一个可排序的Set集合,与 Java 中的 TreeSet 有些类似,但底层数据结构却差别很大,SortedSet中的每一个元素都带有一个 Score 属性,可以基于 Score 属性对元素排序,底层的实现是一个 跳表(SkipList)加 hash表,SortedSet 具备下列特性:

  • 可排序
  • 元素不重复
  • 查询速度快

因为 SortedSet 的可排序特性,经常被用来实现排行榜这样的功能。

SortedSet 类型的常见命令

Redis基础篇——Redis常见命令及数据类型详解_第26张图片

  • 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即可

如 倒叙查找 最后 3名 同学,指令 如下:

ZREVRANGE key 0 2

你可能感兴趣的:(SSM框架,redis,缓存,数据库)