Redis外部数据包装器

时间:2016-03-31 11:05:17

标签: postgresql redis

我正在尝试使用redis_fdw创建一个外表。我使用了以下语法

CREATE FOREIGN TABLE redis_db0(关键文本,值文本) SERVER redis_server 选项(数据库'0');

有人能解释我在OPTIONS中传递的数字参数0吗?

2 个答案:

答案 0 :(得分:0)

Redis有多个编号的数据库"在单个实例中。您引用的参数是使用数据库' 0',当您不指定数据库时,这也是默认值(至少在Redis中)。

您可以阅读更多相关内容here,但除非必须,否则基本上不会对其进行更改。

答案 1 :(得分:0)

默认是使用数据库'0',但您可以从源文件networking.c更改默认值,方法:client * createClient(int fd),此语句:selectDb(c,0);

您可以将0更改为您想要的号码,但它应该< = server.dbnum

client *createClient(int fd) {
    client *c = zmalloc(sizeof(client));

    //some code ignored
    selectDb(c,0);//at here,select you want number

客户端中的select 3命令也调用此方法

int selectDb(client *c, int id) {
    if (id < 0 || id >= server.dbnum)
        return C_ERR;
    c->db = &server.db[id];
    return C_OK;
}

然后如果您输入get,它将执行

robj *lookupKeyReadOrReply(client *c, robj *key, robj *reply) {
    robj *o = lookupKeyRead(c->db, key);//loopup the client database
    if (!o) addReply(c,reply);
    return o;
}