金桂冠键 - 值持续多个商店 [英] GWAN Key-Value persistent multiple store

查看:127
本文介绍了金桂冠键 - 值持续多个商店的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要记录持久模式键 - 值,但是当我想用2个或更多不同的商店这是行不通的。

I want to record a key-value in persistent mode but when I want to use 2 or more different stores it doesn't work.

下面是我的脚本:

    ...
    typedef struct{
       kv_t  *kv;
       char  *name;
    } kv_data;

    int main(int argc, char *argv[])
    {
       kv_data **data = (kv_data**)get_env(argv, US_SERVER_DATA);
       if(!data[0]){
          data[0] = (kv_data*)calloc(1, sizeof(kv_data));
          if(!data[0]){
             return 500;
          }
          kv_t users;
          kv_init(&users, "users", 10, 0, 0, 0);
          data[0]->kv = &users;

          kv_item item;
          item.key = "pierre";
          item.klen = sizeof("pierre") - 1;
          item.val = "pierre@example.com";
          item.flags = 0;
          kv_add(data[0]->kv, &item);

          data[0]->name = strdup("users");
       }
    ...

此错误是在与kv_init()函数的第15行。

This error is in line 15 with the kv_init() function.

我的愿望是,例如使用数据[0] - > KV 以读取和 用户存储记录值,要使用数据[1] - > KV 以读取和记录值其他商品...

My wish would be for example to use data[0]->kv to read and record value in "users" store and to use data[1]->kv to read and record value in other store...

推荐答案

我只是附加包含所有的KV卖场,我需要持久性指针千伏店。 G-WAN千伏快,加上记录数是小的,它不应该影响性能。

I just attach a kv store that contain all the kv stores I need to the persistence pointer. G-WAN kv is fast, plus the number of records is small, it should not hurt performance.

  xbuf_t *reply = get_reply(argv);
  kv_t **kv_db = (kv_t **)get_env(argv, US_VHOST_DATA);

  if (!kv_db[0])
  {
     kv_db[0] = (kv_t*) malloc(sizeof(kv_t));

     if (!kv_db[0])
     {
        puts("Could not allocate memory for the v-host kv store");
        return 500;
     }

     kv_init(kv_db[0], "kv_db", 10, 0, 0, 0);
  }

  kv_t *blog_db = (kv_t *) kv_get(kv_db[0], "blog_db", 7);

  if (blog_db)
  {
     xbuf_cat(reply, "Blog already installed. GTFO.");
     return 200;
  }

  blog_db = (kv_t *) malloc(sizeof(kv_t));
  kv_init(blog_db, "blog_db", 0, 0, 0, 0);

  if (!blog_db)
  {
     puts("Could not allocate memory for the blog kv store");
     return 500;
  }

  _KV_ADD(kv_db[0], item, blog_db->name, blog_db, 0);

(_ KV_ADD是一个自定义宏)

(_KV_ADD is a custom macro)

这篇关于金桂冠键 - 值持续多个商店的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆