2015-02-11 2 views
3

Предположим, что в redis есть следующие пары ключей-значений типа string: key1 val1 key2 val2 Я знаю, что они хранятся внутри таблицы.Как пары ключ-значение хранятся в redis?

Эти пары ключ-значение хранятся в одной таблице? или существуют ли разные таблицы для каждой пары значений ключа?

т. Е. Содержит ли только одна таблица как пары ключ-значение, так и одна таблица хранит ключ1-val1 и другую таблицу хранения key2-val2?

ответ

5

Существует только одна таблица для всех пар ключ-значение в той же БД Redis.

Фактически, пара ключ-значение хранится в большой хэш-таблице.

https://github.com/antirez/redis/blob/unstable/src/redis.h#L469

/* 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 */ 
    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 */ 
    dict *watched_keys;   /* WATCHED keys for MULTI/EXEC CAS */ 
    struct evictionPoolEntry *eviction_pool; /* Eviction pool of keys */ 
    int id;      /* Database ID */ 
    long long avg_ttl;   /* Average TTL, just for stats */ 
} redisDb; 

Все пары ключ-значение хранится в Словаре.

Смежные вопросы