【Redis | 第一篇】Redis常见命令

目录

一、Redis数据结构介绍

二、Redis的通用命令

三、String类型

[3.1 key的层级结构](#3.1 key的层级结构)

四、Hash类型

五、List类型

六、Set类型


一、Redis数据结构介绍

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

二、Redis的通用命令

通用命令是不区分数据类型的操作,主要用于对 Key 本身进行管理。

  • KEYS pattern

    • 功能 :查找所有符合给定模式(pattern)的 key。例如 KEYS * 会查出所有的 key。

    • 注意:在生产环境中应当尽量避免使用,因为 Redis 是单线程处理,当 key 数量极其庞大时,该命令会阻塞服务器。

  • DEL key [key ...]

    • 功能:删除给定的一个或多个 key。如果 key 不存在,则直接忽略。

    • 返回值:被实际删除的 key 的数量。

  • EXISTS key [key ...]

    • 功能:检查给定 key 是否存在。

    • 返回值:若 key 存在返回 1,否则返回 0。传入多个 key 时,返回存在的 key 的总数。

  • EXPIRE key seconds

    • 功能:为指定的 key 设置过期时间(单位为秒)。过期后,该 key 会被自动删除。
  • TTL key

    • 功能:返回给定 key 的剩余生存时间(Time To Live,单位为秒)。

    • 返回值 :如果没设置过期时间返回 -1;如果 key 不存在或已过期返回 -2;否则返回剩余秒数。

三、String类型

String 是 Redis 最基本的数据类型,一个 key 对应一个 value。它可以包含任何数据,比如文本、数字。

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

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

底层是字节数组形式存储。最大空间不能超过512MB。

  • SET key value

    • 功能:添加或修改已经存在的 String 类型的键值对。
  • GET key

    • 功能 :获取指定 key 的值。如果 key 不存在,返回 nil
  • MSET key value [key value ...]

    • 功能:批量添加多个 String 类型的键值对。
  • MGET key [key ...]

    • 功能:批量获取多个 String 类型的 key 的值。
  • INCR key

    • 功能:将 key 中储存的数字值增一。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。常用于计数器。
  • SETNX key value

    • 功能:只有在 key 不存在时才设置 key 的值(Set if Not eXists)。常用于实现分布式锁。

3.1 key的层级结构

Redis的key允许有多个单词形成层级结构,多个单词之间用 " : " 隔开,格式如下:

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

这个格式并非固定,也可以根据自己的需求来删除或添加词条。例如我们的项目名称叫heima,有user和product两种不同类型的数据,我们可以这样定义key:

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

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

使用 " : " 分级后在可视化窗口中可以看到明显的层级结构。

四、Hash类型

Hash 是一个键值对集合,特别适合用于存储对象(类似于 Java 中的 Map<String, String>)。

我们首先看String结构将对象序列化后的存储形式,这种形式对于修改对象中的指定的字段时很不方便:

Hash结构可以将对象中的每个字段独立存储,可以针对单个字段做CURD:

  • HSET key field value [field value ...]

    • 功能:为指定 Hash 类型 key 中的字段(field)赋值。在较新的 Redis 版本中,HSET 已经支持一次性设置多个 field-value。
  • HGET key field

    • 功能:获取指定 Hash 类型 key 中给定字段的值。
  • HMGET key field [field ...]

    • 功能:批量获取指定 Hash 类型 key 中多个字段的值。
  • HGETALL key

    • 功能:获取指定 Hash 类型 key 中所有的字段和值。
  • HDEL key field [field ...]

    • 功能:删除指定 Hash 类型 key 中的一个或多个字段。
  • HKEYS key / HVALS key

    • 功能:分别获取 Hash 表中的所有字段名(fields)或所有值(values)。

五、List类型

List 是一个简单的字符串列表,按照插入顺序排序。底层实际上是一个双向链表,对两端的操作性能极高,但通过索引访问中间元素的性能较差。

  • LPUSH key element [element ...]

    • 功能:将一个或多个元素插入到列表的表头(左侧)。
  • RPUSH key element [element ...]

    • 功能:将一个或多个元素插入到列表的表尾(右侧)。
  • LPOP key

    • 功能:移除并返回列表的第一个元素(左侧弹出)。
  • RPOP key

    • 功能:移除并返回列表的最后一个元素(右侧弹出)。
  • LRANGE key start stop

    • 功能 :返回列表中指定区间内的元素。0 表示第一个元素,-1 表示最后一个元素。例如 LRANGE key 0 -1 会返回列表中的所有元素。

执行PUSH操作:

六、Set类型

Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。常用于交集、并集、差集等操作。

  • SADD key member [member ...]

    • 功能:向集合添加一个或多个成员,已经存在的成员将被忽略。
  • SREM key member [member ...]

    • 功能:移除集合中的一个或多个成员。
  • SMEMBERS key

    • 功能:返回集合中的所有成员。
  • SISMEMBER key member

    • 功能:判断 member 元素是否是集合 key 的成员。
  • SINTER key [key ...] / SUNION / SDIFF

    • 功能:分别计算并返回多个集合的交集(SINTER)、并集(SUNION)和差集(SDIFF)。常用于共同关注、好友推荐等功能。
相关推荐
Omics Pro4 小时前
1个月2轮融资!长寿虚拟细胞
数据库·人工智能·算法·机器学习·自然语言处理
zcn1265 小时前
row_number()函数与group by性能比较
数据库·sql优化改写
Wang's Blog5 小时前
Java 项目实战: 外卖平台-后台系统登录功能开发
java·服务器·redis
小K讲AI营销5 小时前
AI基础设施融资路径的中美比较:资本市场模式与政策金融模式
大数据·数据库·人工智能
净水深流5 小时前
中国冷链冷库行业数据分析:从规模扩张到技术驱动
大数据·数据库·人工智能·冷库冷链
李兆龙的博客6 小时前
从一到无穷大 #94:ClickHouse TimeSeries——时间线组织与 Prometheus 兼容性
数据库
冰暮流星6 小时前
事务的四个特性(ACID)详解
数据库
byte轻骑兵6 小时前
时序数据库选型全指南|大数据工业场景Apache IoTDB落地实操
大数据·数据库·人工智能·apache iotdb
Sirens.6 小时前
MySQL数据库:JDBC编程
数据库·mysql
蓝速科技6 小时前
会议室门牌签到功能选型与落地指南丨蓝速科技
大数据·运维·数据库·人工智能·科技