美文网首页
redis数据库结构

redis数据库结构

作者: 涵仔睡觉 | 来源:发表于2018-05-03 16:41 被阅读0次

数据库结构,每个redisDb代表一个数据库,默认情况下有16个数据库(0-15号数据库)。默认情况下使用0号数据库,可以使用SELECT命令切换数据库。

image
/* Redis database representation. There are multiple databases identified
 * by integers from 0 (the default database) up to the max configured
 * database. The database number is the 'id' field in the structure. */
typedef struct redisDb {
    // 数据库键空间,保存着数据库中的所有键值对
    dict *dict;                 /* The keyspace for this DB */
    // 键的过期时间,字典的键为键,字典的值为过期事件 UNIX 时间戳
    dict *expires;              /* Timeout of keys with a timeout set */
    // 正处于阻塞状态的键
    dict *blocking_keys;        /* Keys with clients waiting for data (BLPOP) */
    // 可以解除阻塞的键
    dict *ready_keys;           /* Blocked keys that received a PUSH */
    // 正在被 WATCH 命令监视的键
    dict *watched_keys;         /* WATCHED keys for MULTI/EXEC CAS */
    struct evictionPoolEntry *eviction_pool;    /* Eviction pool of keys */
    // 数据库号码
    int id;                     /* Database ID */
    // 数据库的键的平均 TTL ,统计信息
    long long avg_ttl;          /* Average TTL, just for stats */
} redisDb;

dict:数据库键空间,保存了数据库中所有的键值对。键为数据库的键,是一个字符串对象;值是数据库的值,可以是字符串对象、列表对象、哈希表对象、集合对象和有序集合对象中的一种。
expires:过期字典,保存了dict中所有键值对的过期时间,键是指向键空间(dict)中某个键对象的指针(不会造成内存浪费),值是一个longlong型的整数,保存了对应键的过期时间。
过期键删除策略:

  • 定时删除:创建定时器,在过期时间来临时立即执行对键的删除,对内存友好,但对CPU不友好;
  • 惰性删除:每次从键空间中获取键时,先检查该键是否过期,若过期就删除该键,否则返回该键,对CPU友好,但对内存不友好;
  • 定时删除:每隔一段时间,检查数据库并删除过期的键,是定时删除和惰性删除的折中方案。

redis采用惰性删除和定时删除两种策略结合。定时删除策略默认规定时间内检查16个数据库,每隔数据库检查20个键是否过期。

相关文章

  • Redis源码分析之数据结构

    本篇我们来看一下Redis的数据存储结构。 数据库 Redis的数据库对应的结构体是redisDb,对应的结构体定...

  • Redis

    Redis 关系型和非关系数据库比较: redis数据结构 redis列表数据结构 案例 概念: redis是一款...

  • Redis 设计与实现 4:字典 dict

    Redis 中,字典是基础结构。Redis 数据库数据、过期时间、哈希类型都是把字典作为底层结构。 字典的结构 哈...

  • Redis入门

    @(数据库) Redis C语言开发的非关系型键值对数据库 1 基本介绍 redis 的数据结构redis存储的实...

  • 2018-04-19redis

    初始redis:redis是远程的redis是基于内存的(数据+结构)redis是非关系型数据库redis的应用场...

  • redis系列(二):redis存储

    服务器中的数据库 redisServer redis是内存数据库。所以,一个redis数据库,就对应了一个结构体。...

  • Redis为什么这么快

    Redis快的原因 内存结构 单线程 IO多路复用 内存结构 Redis是KV结构的内存数据库,在内存上操作数据,...

  • Redis从了解到掌握:Redis单机数据库、持久化机制事件

    数据库 服务器中的数据库 Redis服务器将所有数据库都保存在服务器状态redis.h/redisServer结构...

  • 使用Docker启动Redis和MySQL

    安装启动Redis Redis介绍 Redis是一个开源的内存数据库,Redis提供了多种不同类型的数据结构,很多...

  • Java面试题集三

    一、Redis分布式存储 Redis:非关系型数据库,Key-Value形势存储,结构灵活;是内存中的数据结构存储...

网友评论

      本文标题:redis数据库结构

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