C 在服务器上存储微小数据的最快方法

C 在服务器上存储微小数据的最快方法,c,performance,apache,storage,C,Performance,Apache,Storage,我正在寻找一种更好更快的方法,以尽可能快的速度在我的Web服务器上存储数据 我的想法是将每个传入请求的IP地址记录到服务器上的任何网站上,如果它在设定的时间内达到某个数字,那么用户将被重定向到一个页面,在该页面上他们需要输入代码以重新获得访问权 我创建了一个apache模块,它就是这样做的。它试图在ramdisk上创建文件,但我经常遇到权限问题,因为还有另一个模块在我的模块有机会运行之前切换用户 使用物理磁盘是一个太慢的选项 因此,我唯一的选择如下: 在ramdrive上为每个网站创建文件夹,以

我正在寻找一种更好更快的方法,以尽可能快的速度在我的Web服务器上存储数据

我的想法是将每个传入请求的IP地址记录到服务器上的任何网站上,如果它在设定的时间内达到某个数字,那么用户将被重定向到一个页面,在该页面上他们需要输入代码以重新获得访问权

我创建了一个apache模块,它就是这样做的。它试图在ramdisk上创建文件,但我经常遇到权限问题,因为还有另一个模块在我的模块有机会运行之前切换用户

使用物理磁盘是一个太慢的选项

因此,我唯一的选择如下:

在ramdrive上为每个网站创建文件夹,以便可以独立记录IP地址

不知怎么搞清楚如何让我的apache模块在所有其他模块之前执行其功能

分配大量ram并将所有内容存储在其中。 如果我选择选项2,那么我将继续绕圈子,因为我已经尝试过了

如果我选择选项1,那么我可能需要更多的ram,因为大量重复的IP地址需要存储在ram驱动器上的多个文件夹中

如果我选择选项3,那么apache模块必须不断地通过分配的ram空间进行搜索,以找到IP地址,而搜索需要时间

人们说内存访问比文件访问快,但我不确定通过malloc直接访问内存是否比将数据存储到ram驱动器快

我希望收集大量IP地址的原因是阻止脚本小子不断以非常高的速率访问我的服务器

所以我要问的是,我应该以什么样的方式存储数据以及为什么要这样做?

您可以使用hashmap而不是大量的ram。会很快的


每个网站可能有几个哈希映射。或者使用string\u hashwebsite\u name+int\u haship之类的组合如果问题在于权限,为什么不在该级别解决它呢?使用公用用户帐户或组。或者使RAM磁盘上的所有内容都可读/写


如果您想在Apache级别上解决这个问题,您可能需要研究和。

我不确定通过RAM查找是什么意思。RAM代表随机存取存储器。对它的任何访问都是O1操作。您是否可以使用基于堆的启发式方法,使用4个无符号数组[256]来计算IP每个部分发出的请求?然后关注每个阵列的最高值。猜猜RAM驱动器在写入时会做什么。它将数据存储在RAM中。。。之后,数据经过了几个非即时的处理步骤。当然,这并不比仅仅在RAM中存储数据更快。@WeatherVane如果我理解你的想法,我想你的意思是制作一个4维数组,其中每个维都是ip地址的一部分。这是一个很好的答案,但内存要求非常高。即使声明一个字符[255][255][255][255]也会占用略多于4GB的ram,这是我整个服务器空间的一半,但我只有1或2GB的内存可供使用,因为其余的内存用于通过apache为网站服务。@Mike不,我不是说制作一个4-D数组,而是四个1-D数组。我想到了这一点,但同时,这会带来安全风险,因为不止一个用户可以访问服务器,并且如果数据是世界可写的,并且有一天,授权用户会让未经授权的用户访问系统(无论是否有意),然后,恶意用户可能会破坏数据,如果他/她弄清楚了一切,以脚本小子破坏服务器的速度,这些黑客几乎可以弄明白任何事情