数据库

作者: 我要尝鲜 | 来源:发表于2018-07-16 21:37 被阅读0次

服务器中的数据库

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

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

在初始化服务器时,程序会根据服务器状态的dbnum属性来决定创建多少个数据库。
默认情况下,dbnum属性的值为16。

切换数据库

每个redis客户端都有自己的目标数据库,每当客户端执行数据库写命令或者数据库读命令的时候,目标数据库就会成为这些命令的操作对象。
默认情况下,redis客户端的目标数据库为0号数据库,但客户端可以通过执行SELECT命令来切换目标数据库。

客户端状态redisClient结构的db属性记录了客户端当前的目标数据库,这个属性是一个指向redisDb结构的指针:

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

设置键的生存时间或过期时间

通过EXPIRE命令或者PEXPIRE命令,客户端可以以秒或者毫秒精度为数据库中的某个键设置生存空间。
EXPIRE 的参数为 秒。
PEXPIRE的参数为 毫秒。

与EXPIRE命令类似,也可以通过EXPIREAT或PEXPIREAT命令。
EXPIREAT为秒的时间戳。
PEXPIREAT为毫秒的时间戳。

TTL命令和PTTL命令接受一个带有生存时间或者过期时间的键,返回这个键的剩余时间。
TTL 返回秒为单位的剩余时间。
PTTL 返回毫秒为单位的剩余时间。

过期键删除策略

定时删除:在设置键的过期时间的同时,创建一个定时器,让定时器在键的过期时间来临时,立即执行对键的操作。
惰性删除:放任键过期不管,但是每次从键空间获取键时,都检查取得键是否过期,过期则删除,未过期则返回。
定期删除:每隔一段时间,程序就对数据库进行检查,删除里面过期的键。

总结

Redis服务器的所有数据库都保存在redisServer.db数组中,而数据库的数量则由redisServer.dbnum保存。
客户端通过修改目标数据库指针,让它指向redisServer.db数组中的不同元素来切换不同的数据库。
数据库主要由dict和expires两个字典构成,其中dict字典负责保存键值对,而expires字典则负责保存键的过期时间。
数据库的键总是一个字符串对象,而值可以是字符串、哈希表、集合、列表、有序列表对象。
expires字典的键指向数据库中的某个键,而值则记录了数据库键的过期时间,过期时间是一个以毫秒为单位的unix时间戳。
redis使用惰性删除和定期删除两种策略来删除过期键:惰性删除策略只在碰到过期键时才删除,定期删除策略则每隔一段时间主动查找并删除过期键。

相关文章

  • MySQL数据库day01

    系统数据库 ​​​ 创建数据库 ​​​ ​​​ ​​​ ​​​ 查看所有数据库 使用数据库 修改数据库 删除数据库...

  • 数据库操作

    创建数据库: 选择数据库: 查看数据库: 修改数据库: 删除数据库:

  • Ubuntu操作mysql数据库命令

    一、连接数据库 连接本地数据库 退出数据库 二、操作数据库 创建数据库 显示数据库 删除数据库 连接数据库 查看状...

  • 4-14

    创建数据库 createdatabase数据库名称; 删除数据库 dropdatabase数据库名称; 查看数据库...

  • [后端开发] Mysql学习笔记

    1.0 数据库 创建数据库 查看所有数据库 删除数据库 切换数据库名 查看正在使用的数据库 2.0 数据库表 创...

  • 2020最新最全数据库系统安全

    数据库标识与鉴别 数据库访问控制 数据库安全审计 数据库备份与恢复 数据库加密 资源限制 数据库安全加固 数据库安...

  • 2020-01-05 sql基本概念

    数据库用来储存数据。 数据库的种类大致有:层次数据库、关系数据库、面向对象数据库、XML数据库、键值数据库。 关系...

  • Mysql数据库基本操作

    连接数据库 退出数据库 查看数据库版本 显示数据库时间 查看当前使用的数据库 查看所有数据库 数据库备份 导入数据...

  • mysql命令行操作

    准备 登陆 数据库操作 查看现有数据库 创建数据库 删除数据库 查看数据库 使用数据库 查看当前数据库 表操作 新...

  • 1.7.1 MySQL数据库学习

    1. 数据库命令行学习 进入数据库 创建数据库 查看数据库列表 删除数据库 使用数据库 查看当前数据库 2. 表 ...

网友评论

      本文标题:数据库

      本文链接:https://www.haomeiwen.com/subject/oakipftx.html