C 使用KV store管理G-WAN中的缓存

C 使用KV store管理G-WAN中的缓存,c,web-applications,webserver,g-wan,C,Web Applications,Webserver,G Wan,我目前正在使用G-Wan web服务器在C中开发一个web应用程序,我想使用G-Wan附带的KV Store来存储生成的网页和显示网页次数的计数器 KV存储是一个散列映射,可用于存储复杂数据,如结构 这就是我用来存储HTML数据和一个整数(计数器): typedef struct { char* HTML; int nbDisplays; } my_data; web服务器使用多个线程,KV存储在线程之间共享 为了更新字段显示,我使用了一个原子操作uuu sy

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

KV存储是一个散列映射,可用于存储复杂数据,如结构

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

typedef struct
{    
  char* HTML;    
  int nbDisplays;    

} my_data;
web服务器使用多个线程,KV存储在线程之间共享

为了更新字段显示,我使用了一个原子操作uuu sync\u fetch\u和add(…) 但我不知道更新字段HTML(指针)的最佳方法是什么

是否更好:

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

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

    但G-Wan KV Store的功能并没有让它看起来像一个
    散列映射。不能使用
    哈希映射执行这些范围查询
    kv\u add()
    被记录为原子操作。您可以使用它来更新计数器,但这比仅使用原子操作来增加
    nbDisplays
    计数器的速度要慢,而无需触摸HTML指针(页面名称不会更改)


    但G-Wan KV Store的功能并没有让它看起来像一个
    散列映射。您无法使用
    哈希映射执行这些范围查询

    根本没有答复。。。没有人使用此web服务器?根本没有答复。。。没有人使用这个网络服务器?好的,谢谢你的回复。我在计数器上遇到了一些问题:我使用CURL在同一页上询问了10次,第一次呼叫没有使用KV,而在其他9次呼叫之后,使用KV和递增显示。最后,NB显示=6而不是10。我不明白为什么。如果你有线索,我很感兴趣。JérômeThe源代码(明确)警告您应该执行计数器的原子增量。这正是你有线程问题的原因。好的,谢谢你的回复。我在计数器上遇到了一些问题:我使用CURL在同一页上询问了10次,第一次呼叫没有使用KV,而在其他9次呼叫之后,使用KV和递增显示。最后,NB显示=6而不是10。我不明白为什么。如果你有线索,我很感兴趣。JérômeThe源代码(明确)警告您应该执行计数器的原子增量。这正是线程问题的原因。