Redis笔记2-单机数据库

数据库

介绍服务器保存数据库的方法,客户端切换数据库的方法,数据库保存键值对的方法,以及对数据库的增删改查

服务器中的数据库

Redis服务器将所有数据库都保存在服务器状态redisServer结构的db数组中,db数组的每一项都是一个redisDb结构,代表一个数据库

struct redisServer{
    
    
  redisDb *db; //一个数组,保存所有数据库
  int dbnum;  //服务器数据库数量
}

初始化服务器时,根据redisServer的dbnum属性决定创建多少个数据库,默认为16

切换数据库

Redis客户端的目标数据库默认为0号,执行SELECT命令切换目标数据库
服务器内部,客户端状态redisClient结构的db属性记录客户端当前的目标数据库,这个属性是一个指向redisDb结构的指针:

typedef struct redisClient{
    
    
  redisDb *db; //记录客户端正在使用的数据库
}

数据库键空间

Redis是KV数据库服务器,服务器每个数据库都是一个redisDb结构表示,redisDb结构的字典dict保存数据库中所有键值对,这个字典称为键空间(key space)

typedef struct redisDb{
    
    
  dcit *dict; //保存数据库中所有键值对
}

键空间和用户所见的数据库是直接对应的

  • 键空间的键也就是数据库的键,每个键都是一个字符串对象
  • 键空间的值也就是数据库的值,可以是字符串、列表、哈希表、集合、有序集合对象
    数据库的键空间是一个字典,所以对数据库的增删改查都是通过对字典进行操作来实现

键空间操作

redis> SET string_key, object_value1 //添加键
redis> DEL string_key //删除键
redis> SET string_key, object_value2 //更新键
redis> GET string_key //对键取值

FLUSHDB:清空数据库
RANDOMKEY:随机返回键
DBSIZE:返回数据库键数量
LRANGE
EXISTS
RENAME
KEYS

(待补充)

键生存/过期时间

过期时间是一个UNIX时间戳,当键过期时间来临,服务器自动从数据库中删除这个键
TTL/PTTL命令接受一个带生存时间或过期时间的键,返回其剩余生存时间

设置过期时间

Redis提供了4个命令设置过期时间:

  • EXPIRE<key> <ttl>:将key的生存时间设为ttl秒。
  • PEXPIRE<key> <ttl>:将key的生存时间设为ttl毫秒。
  • EXPIREAT<key> <timestamp>:将key的过期时间设置为timestamp秒数时间戳。
  • PEXPIREAT<key> <timestamp>:将key的过期时间设置为timestamp毫秒数时间戳。

保存过期时间

redisDb中有一个expires的字典数据结构保存所有键的过期时间,也称为过期字典。

  • 过期字典的键是一个指针,指向键空间的某个键对象
  • 过期字典的值是一个long long类型的整数,保存了键所指向的数据库键的过期时间(毫秒精度的Unix时间戳)
typedef struct redisDb{
    
    
  dict *expires; //过期字典,保存键的过期时间
}

RDB持久化

AOF持久化

事件

客户端

服务器

(待补充)

猜你喜欢

转载自blog.csdn.net/MinutkiBegut/article/details/115238830