主题
Redis 数据结构与通用命令介绍
数据结构介绍
Redis 是一个 key-value 的数据库,key 一般是 string 类型,不过 value 的类性多种多样:
数据类性 | 示例 | 本质 |
---|---|---|
string | helloword | 字符串 |
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)} | 地理坐标 |
BitMap | 0110110101110101011 | 位存储 |
HyperLog | 0110110101110101011 | 位存储 |
前 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,不讯在返回 0EXPIRE 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字符串后存储