gpt4 book ai didi

c++ - C 或 C++ - 动态增长/收缩磁盘支持的共享内存

转载 作者:太空宇宙 更新时间:2023-11-04 00:56:19 24 4
gpt4 key购买 nike

我有几个应该共享数据的 fastcgi 进程。

数据绑定(bind)到一个 session (一个唯一的 session ID 字符串)并且应该能够在服务器重启后继续存在。根据 session 的数量,共享数据可能太大而无法放入主内存。理想情况下,当共享数据超过某个阈值时,绑定(bind)到最不活跃 session 的数据应该只存在于磁盘上,而最活跃的 session 数据应该从主内存中可用。 session 闲置一段时间后, session 数据将被销毁。

我的问题是(作为 C/++ 的新手):

是否有任何方法或库可以帮助我解决这个棘手的问题?

考虑到应销毁非事件 session 数据的要求,是否可以将 mmap() 与共享内存一起使用?

最佳答案

在您对 bmargulies 发表评论后,我应该提醒您,我本人曾尝试执行您所描述的操作,但我发现我正在编写一个 ACID 数据库。回顾一下,您要求:

  • 统计缓存
  • 数据持久化
  • 进程间数据共享

这就是数据库系统的作用。使用别人写的要好得多。 IMO 你的选择是 sqliteberkeley-db. . Sqlite 不适用于并行访问,另一方面,berkeley-db 非常可扩展,但它使用字符串 - 字符串字典作为其数据模型。

BDB 可以拥有完全在内存中的数据库,或者以序列化到磁盘并缓存在内存中的正常方式。您还可以调整 ACID 语义以满足您的特定需求——即,您可以禁用持久写入,这会在牺牲防弹数据持久性的同时为您提供即时写入特性。

有许多更高级的解决方案,但这些都是针对现实世界的问题——即,您必须构建一个集群。

关于c++ - C 或 C++ - 动态增长/收缩磁盘支持的共享内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1962331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com