使用KV商店管理G-WAN中的缓存

时间:2012-08-17 13:02:25

标签: c web-applications webserver g-wan

我目前正在使用G-Wan网络服务器在C中开发一个网络应用程序,我想使用G-Wan附带的KV商店来存储生成的网页和计数器页面的次数已经显示。

KV商店是一个哈希映射,可用于存储复杂的数据,如结构。

这就是我用来存储HTML数据和整数的计数器:

typedef struct
{    
  char* HTML;    
  int nbDisplays;    

} my_data;

Web服务器正在使用多个线程,并且KV存储在线程之间共享。

更新字段nbDisplays我正在使用原子操作__sync_fetch_and_add(...) 但我不知道更新作为指针的字段HTML的最佳方法是什么。

是否更好:

  1. 使用存储在KV中的现有结构来构建新结构以获取当前值并使用G-WAN提供的add()函数将其添加到KV商店(此功能用新结构替换旧结构)
  2. 或直接更新存储在KV商店中的结构的值?
  3. 我不习惯在多线程环境中编程,我害怕一些“奇怪的”行为......

1 个答案:

答案 0 :(得分:1)

kv_add()被记录为原子操作。您可以使用它来更新计数器,但这比仅使用原子操作增加nbDisplays计数器而不触及HTML指针(页面名称不会更改)要慢。

但G-Wan KV商店的功能并不会使它看起来像hash map。您无法使用hash map进行范围查询。