文档章节

大量数据放入缓存的高效办法

learn_more
 learn_more
发布于 2015/12/31 15:32
字数 378
阅读 899
收藏 11


问题背景

用户登录信息想放入缓存中,用户的信息是巨大的包括个人权限、菜单权限、组织范围......,同时用户量也是巨大的,那么问题来来了,虽然这种文字信息的数据放入缓存其实也不会占多大内存,只要获取速度够快就行,可是呢当我我把这些数据放入一个Map中的时候,我发现,Map个get并没有那么轻松。于是如何解决这种大量数据放入缓存然后又不影响查询速度呢?


问题解决

1、数组也就是顺序表,当知道索引位置时,获取数据是非常快的,所以在大数据量存储在内存中的情况下是可以用一个数组来存储对象信息的。

2、Map的最大的优点就是get非常快,因为他对每一个key都做了哈希算法,所以在Java大数据量的时候,可以使用Map和数组结合的方式,用Map来存储 对象的key 且 该对象在数组中的索引作为Map的value,通过value和数组的方式就可以获得对应的值。


总结

很多看似寻常的东西,如果慢慢体会你就会发现很多东西都不寻常。

© 著作权归作者所有

learn_more
粉丝 93
博文 240
码字总数 210196
作品 0
深圳
程序员
私信 提问
加载中

评论(3)

learn_more
learn_more 博主
有待研究,为什么还要把value放到数组里面去?实在不解,存储到Map里面做value就不用转数组了,不是更快吗?1
learn_more
learn_more 博主

引用来自“chencliff”的评论

value直接存在map中不行吗?要在Map中找index,再去数组里找value?

Map<Integer,Object>的速度会很慢?
Map 这个不能满足需求,难道你们的key都是数字吗?不是的吧,如果是缓存用户信息,key应该是tokenID
chencliff
chencliff
value直接存在map中不行吗?要在Map中找index,再去数组里找value?

Map<Integer,Object>的速度会很慢?
PbootCMS V1.3.8 发布,PHP免费建站系统

更新日志: 1、新增同时支持fsockopen及streamsocketclient发送邮件; 2、优化邮件发送失败错误提示信息; 3、新增手机版绑定域名后自动跳转到对应域名地址上; 4、修改会话文件默认为使用系...

hnxsh
04/12
873
5
物联网平台构架系列 (三):Amazon, Microsoft, IBM IoT 解决方案导论 之 连接

最近研究了一些物联网平台技术资料,以做选型参考。脑子里积累大量信息,便想写出来做一些普及。作为科普文章,力争通俗易懂,不确保概念严谨性。我会给考据癖者提供相关英文链接,以便深入研...

冯立超
2017/05/05
0
0
网站加速常用办法

大型web项目解决方案 之 网站加速 网站加速方案 1、squid代理缓存技术 反向缓存,动静分离。 基本原理:客户请通过代理服务器请求总服务器,代理服务器把把总服务器的静态数据放入squid的缓存...

罗文浩
2016/02/15
22
0
Spring支持的CacheManager

数据缓存Cache 为何要用缓存、缓存的目的是为了什么? 我们知道一个程序的瓶颈在于数据库,内存的速度远远大于硬盘的速度,当我们一次又一次 请求数据库或远程服务时会导致大量的时间耗费在数...

恋码之子
2018/12/11
90
0
如何减少接口响应时间

如何减少接口响应时间 Premature optimization is the root of all evil.   — Donald Knuth 对于程序优化,我一直采取保守的态度,除非万不得已。但是随着业务的不断发展,程序越来越复杂,...

nj-zhangmq
2016/12/21
10
0

没有更多内容

加载失败,请刷新页面

加载更多

Java 面试

https://www.bilibili.com/video/av51271222?from=search&seid=4920203212236751600 https://www.bilibili.com/video/av60309372/?spm_id_from=333.788.videocard.4......

MtrS
36分钟前
6
0
理想的数据分析平台

数据分析尤其是大数据分析这几年的热度依然不减,但面对眼花缭乱的数据分析产品很难去选择,那什么是理想的数据分析平台呢。下面是根据我的个人理解的理想数据分析平台,在次强调我理想的数据...

赛克蓝德
43分钟前
7
0
房贷计算器

题目要求 贷款有两种还款的方式:等额本金法和等额本息法,简单说明一下等额本息法与等额本金法的主要区别: 等额本息法的特点是:每月的还款额相同,在月供中“本金与利息”的分配比例中,前...

wzb88
54分钟前
10
0
springboot2 配置druid数据链接池,监控控制台

Druid是什么? Druid首先是Java语言中最好的数据库连接池,也是阿里巴巴的开源项目。Druid是阿里巴巴开发的号称为监控而生的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池...

万建宁
55分钟前
7
0
离线环境玩Docker-安装篇

如果你使用的是Mac之类的系统,推荐本地安装Docker,然后Docker运用运行CentOS(目标安装环境是CentOS)。如果你使用的是Windows,那么创建一个虚拟机可能是比较好的选择,Docker运行CentOS当然...

RippleChan
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部