首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用KV存储管理G中的缓存

使用KV存储管理G中的缓存
EN

Stack Overflow用户
提问于 2012-08-17 13:02:24
回答 1查看 320关注 0票数 1

我目前正在使用G服务器在C中开发一个web应用程序,我希望使用G中包含的KV商店来存储生成的网页和显示页面次数的计数器。

KV存储是一个散列映射,您可以使用它来存储复杂的数据,比如结构。

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

代码语言:javascript
运行
复制
typedef struct
{    
  char* HTML;    
  int nbDisplays;    

} my_data;

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

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

是否更好:

  1. 使用存储在KV中的现有结构构建一个新结构,以获取当前值,并使用G提供的add()函数将其添加到KV (此函数将旧结构替换为新结构)
  2. 还是直接更新存储在KV存储中的结构的值?

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

EN

回答 1

Stack Overflow用户

发布于 2012-08-21 20:12:37

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

但是G-万KV的功能并不能使它看起来像一个hash map。您不能使用hash map进行这些范围查询。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12006364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档