Skip to content

Redis 数据结构与通用命令介绍

数据结构介绍

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

数据类性示例本质
stringhelloword字符串
Hash{name: "Jack", age: 21}本质为 hash 表
List[A -> B -> C ->C]本质为链表
Set{A, B, C}本质为无序集合,且不能重复
SortedSet{A:1, B:2, C:3}有序或可排序集合,不能重复
GEO{A:(120.3, 30.5)}地理坐标
BitMap0110110101110101011位存储
HyperLog0110110101110101011位存储

前 5 种为基本类型,后 3 种为特殊类型

TIP

为了方便学习,redis 将不同数据类型的命令也做了分组铭刻在官网查看,也可以在命令行通过help,然后help @<group>查看,例如help @generic查看通用命令

通用命令

通用命令指的是 redis 所有数据结构都能使用的命令,常见的有:

  • KEYS pattern:查看符合模板(pattern)的所有 key,pattern 可以是正则,例如:key *, 不建议在生产环境设备上使用
  • DEL key:删除一个或多个指定的 key,多个 key 之间空格相隔, 返回删除的 key 的数量
  • EXISTS key:判断 key 是否存在,存在返回 1,不讯在返回 0
  • EXPIRE key 秒数:给一个 key 设置有效期,有效期到期时该 key 会被自动删除
  • TTL key:查看一个 KEY 的剩余有效期,-2 已过期(key 不存在) ,否则返回剩余时间

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

Key 的层级格式

思考:Redis:没有类似 MySQL 中的 Table 的概念,我们该如何区分不同类型的 key 呢?

例如,需要存储用户、商品信息到 redis,有一个用户 id 是 1,有一个商品 id 恰好也是 1

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

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

这个格式并非固定,可以根据业务需求来删除或增加词条

若value是一个对象,则需要用对象序列化转为JSON字符串后存储