数据库
Redis 服务器对于他的使用方来说,主要的作用就是“非关系型数据库”、“键值数据库”,本章主要介绍了 Redis 作为一个数据库向使用方提供的接口,以及每种接口的具体实现方式。
数据的存储
Redis 服务器的所有数据库都保存在服务器状态结构 redis.h/redisServer
中:
|
|
其中,db 是一个数组,在服务器初始化时决定创建的数量,默认值时 16。
数组的每一个元素都是 redis.h/redisDb
这个结构,该结构的核心字段是一个字典:
|
|
该字典存储了当前数据库的所有键值对,称之为键空间(key space),和用户所见的数据库是直接对应的:
- 键空间的键:就是数据库的键,所有键都是一个字符串对象;
- 键空间的值:就是数据库的值,每个值都可以是一个“字符串”、“列表”、“哈希表”、“集合”、“有序集合”这些在前面一个介绍过的对象中的任意一个;
SELECT 命令
SELECT
为选择数据库命令,Redis 客户端会维护这样一个结构:
|
|
db
字段会指向服务器中的数据库列表 redisServer.db
中的一个元素。
当 SELECT
命令执行时,对应的客户端结构会更新,db
指针将指向命令中指定的数据库下标。
SET 命令
最常见的命令,在使用 redis 时会在 set 后以不同前缀的形式,表示设置的不同数据结构类型。根据不同值类型执行的具体行为也不同,比如 hset
若提供了三个参数则会更新哈希对象的键值。
当原 key 存在或不存在时执行的行为不一样