日期:2014-05-17  浏览次数:20440 次

请教一个数据在内存中的存储问题 多谢
有一个应用户是根据IP做限制,比如:一个页面同一IP在一定时间内只能访问一次,我把IP信息信息保存在HashTable中,但是随着访问量的增加HashTable占的内存太多了,帮忙提个建议,怎么在内存中保存这个信息会省点内存呢,多谢

------解决方案--------------------
不会
但感觉可以存到数据苦里
------解决方案--------------------
使用字典树来压缩存储。
------解决方案--------------------
我觉得果断存数据库啊
------解决方案--------------------
1. hashtable 本来就是一个散列函数,使用的空间大于实际空间,比较占内存。
2.ip地址如果用string保存会比较占内存,你可以写一个struct,里面用4个byte表示,这样能省不少空间。
最好用数据库保存。
------解决方案--------------------
清一次就找不到比较的对象了,而且频率这么高 一天一次


这样背离需求感觉就好了。

数据跑的速度或许比你想象中的快


引用:
引用:1. hashtable 本来就是一个散列函数,使用的空间大于实际空间,比较占内存。
2.ip地址如果用string保存会比较占内存,你可以写一个struct,里面用4个byte表示,这样能省不少空间。
最好用数据库保存。

保存在数据库里,每次都要从数据库里取,再判断,性能上感觉不好

------解决方案--------------------
一个ip访问结束后要清除。。这样数据量就少了
------解决方案--------------------
如果是IPv4可以转成uint,否则需要4个uint的struct。
内存不足应该使用优先队列,数据被淘汰并且在有效时间范围内的话导入数据库中。