主题
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,不讯在返回 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字符串后存储
