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

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

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

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

typedef struct { char* HTML; int nbDisplays; } my_data; 

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

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

好点吗:

  1. 使用存储在KV中的现有结构来构建新结构以获取当前值并使用G-WAN提供的add()函数将其添加到KV Store(此函数用新结构替换旧结构)
  2. 或者直接更新存储在KV商店中的结构的值?

我不习惯在multithreading环境中编程,我害怕一些“奇怪”的行为……

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

但是G-Wan KV Store的function并没有让它看起来像hash map 。 您不能使用hash map执行这些范围查询。