如何将键值对存储在redis中?

Rid*_*ima 3 redis

假设在redis中,有以下类型为string的键值对:key1 val1 key2 val2我知道它们存储在表内部.

这些键值对是否存储在一个表中?或者每个键值对有不同的表吗?

即,只有一个表包含键值对或一个表存储key1-val1和另一个表存储key2-val2吗?

kai*_*521 5

同一个Redis DB中的所有键值对只有一个表.

实际上,键值对存储在一个大的哈希表中.

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;
Run Code Online (Sandbox Code Playgroud)

所有键值对都存储在dict中.