首先,我知道要把数据读到缓存中,现在的问题是:
1、这么多数据,在网站启动的时候读出来也需要好长时间,
2、当数据更新时更新缓存,企不是又要读一次这么多的数据?如果在更新缓存期间,刚好有人在使用,那怎么办?
3、缓存数据能不能只局部更新呢?
请做过的朋友指点一下,谢谢!!!
但是如果在前端做autocomplete自动显示的话,肯定要需要查找所有数据,所以数据肯定要放在缓存中
谁告诉你这个结论的,拉出去砍了。
1、通常AutoComplete都是有限定,就算符合条件的有300个,也只显示最前面的10个之类。
2、上万条数据,放在数据库里面,加条件查询,再加上Top 10(SQL)或者Take(10) (LINQ)
对于数据库来说,不过是几MS的事,你的系统是12306还是京东商城?如果不是的话,你可以试试看直接查询数据库,
并不是多么可怕的事。
3、如果你的并发连接达到10万个以上,或者其他原因造成确实需要利用缓存进行优化,其实你就不会在这儿问问题了。
我最怕的就是这种编程不超过5年,被网上那些唯性能论的文章带坏的码农了。
先谢谢你的回复:)
AutoComplete要显示的数据确实是有限,但是用户每输一个字就查询一次数据库,但是数据库的基础数据又有上万条,这样查询保证不了AutoComplete的即时显示的效果吧?
如果把这些数据放到缓存中,那么像这样的数据缓存更新是怎么处理的?当更新缓存时,如果有人查询企不是很慢?
@小徐的博客:
这样查询保证不了AutoComplete的即时显示的效果吧?
这个人也拉出去砍了。
@爱编程的大叔: 都砍了谁来做事啊:)
用户每输一个字符就直接从数据库中查?
@小徐的博客: 这么说吧,
不管是WINFORM还是WEB开发,如果数据提供服务器是在远程(IIS/或是SQL Server)
网络传输的时间都远远大于数据库查询的时间。(就你的需求而言)
可能是 200MS+10MS(这个10MS你变成1MS没有任何意义)
只有当你的数据库服务器已经忙到不可开交的时候,缓存才有意义。
可能不好听,但你目前的知识水平,尽量别道听途说。(有可能的情况下自己测试一下)
关于缓存的事,你最好再找下相关的文章,仔细看看,理解一下,
你对缓存的概念还有一些误区。
但对于你目前的场景来说,不需要缓存的。(你别告诉我并发有几万,这不科学,
你是老板的亲戚也不能这样瞎搞)
@爱编程的大叔: 好的,我试试这样直接查询的效果,谢谢
@小徐的博客: 我曾经也写过关于缓存的东西,只不过是吧data放到本地而已,而数据的结构,取data的算法都远没有集成好的oracle、sql server等系统做的好。直接调用数据库是完全可以满足你的需求的。听 @爱编程的大叔 的话没错,你想想,他都是大叔了,哈哈。
不至于一个页面显示上万条吧,没意义啊,眼睛都看花了
(1)分页查询显示
(2)导出的话,上万条不多
是的,但是如果在前端做autocomplete自动显示的话,肯定要需要查找所有数据,所以数据肯定要放在缓存中,现在最大的问题是缓存更新怎么做呢?
@小徐的博客:不晓得,对前端处理这种没做过
你是要 AutoComplete 自动显示出上万条数据吗?
当然不是了,但是为了即时显示相关数据,肯定不能从数据库里查,那样autocomplete显示的数据半天都出不来。
我曾经也写过关于缓存的东西,只不过是吧data放到本地而已,而数据的结构,取data的算法都远没有集成好的oracle、sql server等系统做的好。直接调用数据库是完全可以满足你的需求的。听 @爱编程的大叔 的话没错,你想想,他都是大叔了,哈哈。
@爱编程的大叔 说的是数据库数据庞大时候一些处理的技术,不过对于一百万行以内数据表不建议学他那种超牛x的技术。
o(∩_∩)o 哈哈 开玩笑,学到一定程度,也许你就明白 大叔 在说啥了。
我想你要问的应该是我下面的回答,本地预加载技术,以及本地数据和服务器数据同步校验的方法:
现在很多手机客户端软件大都是选择预加载缓存的技术,
假设我的手机客户端每页只能显示100条,那么我在第一次请求的时候,分两次请求前200的数据,当前100请求完成的时候,就将数据展现出来,后台继续请求101~200的数据,放入缓存;
又如当前我切换到第4页,首先我应该检查一下本地缓存是否有第4页的数据(301~400),如果有,直接展现,如果没有,请求301~400数据,然后展现,同时后台检查是否有第5页数据,如果没有,后台加载到缓存。
当然为了数据同步可以为每一个分组数据定义一个guid 当网络数据层的guid发生变更时,本地使用任何页的数据都要拿本地当前页的guid到服务器去校验下。
如果你的基础表不时时变化的话,直接将那几w数据读到datatable里,然后用autocomplete属性。对性能没啥影响。
偶尔会有变化,所以变化的时候就需要更新缓存了,这么多的数据,更新缓存有没有好的建议?
不能这样的.至多查20条.