金桂冠键 - 值持续多个商店 [英] GWAN Key-Value persistent multiple store
问题描述
我要记录持久模式键 - 值,但是当我想用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屋!