请教一个数据在内存中的存储问题 多谢

bccu 2013-02-18 10:41:34
有一个应用户是根据IP做限制,比如:一个页面同一IP在一定时间内只能访问一次,我把IP信息信息保存在HashTable中,但是随着访问量的增加HashTable占的内存太多了,帮忙提个建议,怎么在内存中保存这个信息会省点内存呢,多谢
...全文
231 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
still_melody 2013-02-19
  • 打赏
  • 举报
回复
清一次就找不到比较的对象了,而且频率这么高 一天一次 这样背离需求感觉就好了。 数据跑的速度或许比你想象中的快
引用 15 楼 bccu 的回复:
引用 12 楼 blue_apple2006 的回复:1. hashtable 本来就是一个散列函数,使用的空间大于实际空间,比较占内存。 2.ip地址如果用string保存会比较占内存,你可以写一个struct,里面用4个byte表示,这样能省不少空间。 最好用数据库保存。 保存在数据库里,每次都要从数据库里取,再判断,性能上感觉不好
bccu 2013-02-19
  • 打赏
  • 举报
回复
引用 12 楼 blue_apple2006 的回复:
1. hashtable 本来就是一个散列函数,使用的空间大于实际空间,比较占内存。 2.ip地址如果用string保存会比较占内存,你可以写一个struct,里面用4个byte表示,这样能省不少空间。 最好用数据库保存。
保存在数据库里,每次都要从数据库里取,再判断,性能上感觉不好
bccu 2013-02-19
  • 打赏
  • 举报
回复
引用 8 楼 Mackz 的回复:
你说随着访问量的增加……你不会是一直保存而不清除的吧?再多内存再高算法也不够用!
现在是一天清一次,能达到1G,不过一上1G,就会有其它问题了
bccu 2013-02-19
  • 打赏
  • 举报
回复
引用 4 楼 caozhy 的回复:
说了一点反应都没有,你数据结构的基础也太差了。 参考 http://bbs.csdn.net/topics/360200867 你的问题本质上和统计海量文本中出现了多少种不同的单词,以及每个单词的出现次数,是一样的。
多谢,我研究一下
blue_apple2006 2013-02-19
  • 打赏
  • 举报
回复
1. hashtable 本来就是一个散列函数,使用的空间大于实际空间,比较占内存。 2.ip地址如果用string保存会比较占内存,你可以写一个struct,里面用4个byte表示,这样能省不少空间。 最好用数据库保存。
yyl8781697 2013-02-19
  • 打赏
  • 举报
回复
我觉得果断存数据库啊
myhope88 2013-02-19
  • 打赏
  • 举报
回复
还是换个设计思路吧
showjim 2013-02-19
  • 打赏
  • 举报
回复
如果是IPv4可以转成uint,否则需要4个uint的struct。 内存不足应该使用优先队列,数据被淘汰并且在有效时间范围内的话导入数据库中。
菜牛 2013-02-19
  • 打赏
  • 举报
回复
你说随着访问量的增加……你不会是一直保存而不清除的吧?再多内存再高算法也不够用!
看看看灰机 2013-02-19
  • 打赏
  • 举报
回复
一个ip访问结束后要清除。。这样数据量就少了
still_melody 2013-02-18
  • 打赏
  • 举报
回复
查了一下hashtable 学习了
still_melody 2013-02-18
  • 打赏
  • 举报
回复
放到数据库不好么 load { 获取ip 从数据库取出该ip最近一次登录时间, now-上一次登录时间 是否大于 规定的时间 吧该次登录时间存到数据库 }
threenewbee 2013-02-18
  • 打赏
  • 举报
回复
每个不同的IP只相当于一个4个字符长度的单词。(标准单词每个字符是26个选择之一,你是256个之一) 你海量输入的IP就好比包含这些单词的文本。
threenewbee 2013-02-18
  • 打赏
  • 举报
回复
说了一点反应都没有,你数据结构的基础也太差了。 参考 http://bbs.csdn.net/topics/360200867 你的问题本质上和统计海量文本中出现了多少种不同的单词,以及每个单词的出现次数,是一样的。
bccu 2013-02-18
  • 打赏
  • 举报
回复
引用 2 楼 caozhy 的回复:
使用字典树来压缩存储。
请问有简单的例子吗,多谢
threenewbee 2013-02-18
  • 打赏
  • 举报
回复
使用字典树来压缩存储。
still_melody 2013-02-18
  • 打赏
  • 举报
回复
不会 但感觉可以存到数据苦里

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧