c# asp.net mvc 工程全局变量问题
程序中不断访问数据库,但是数据库中内容比较少,为了提高速度想将查询结果存入全局变量中,提高访问速度。...
程序中不断访问数据库,但是数据库中内容比较少,为了提高速度想将查询结果存入全局变量中,提高访问速度。
展开
1个回答
推荐于2017-12-16
展开全部
一些频繁访问的数据可以在程序运行之初存在缓存中,比如用户权限列表,这样用户访问模块的时候(这时要获取对应模块的权限)就不必再次请求数据库了,但这样也有弊端,就是不能实时更新权限,比如,我要更改某一个用户的权限,虽然数据库中的值已经更改了,但是程序获取的是缓存中的值,要等到缓存过期或用户重新登录用户的权限才会更新。
对于题主所说的频繁访问的小数据库,我们完全可以把数据存在缓存中,实际上筛选出频繁访问的数据块,是最好的解决方式。
有的同行使用状态码来解决频繁访问的问题,这种技术原理是对于某些相关联的数据块,将其看作一个整体,(程序)运行时缓存于本地缓存中,同时将状态码(这里说的状态码也可以是版本号)也存起来,这样每次需要这部分数据时,比较当前缓存的状态码(版本号)与数据库中的是否一致,如果不一致,说明数据库中的数据已经改变,需要重新获取,如果一致,直接使用缓存中数据,不再请求数据库。当然有的人会开一个新的线程来定时查询状态码是否改变以更新缓存数据,这样程序每次需要数据时读取的都会是缓存中的数据。
一些大型的网站甚至会把用户列表做在缓存中,以版本号的方式来实时更新,以提升用户的体验。
对于题主所说的频繁访问的小数据库,我们完全可以把数据存在缓存中,实际上筛选出频繁访问的数据块,是最好的解决方式。
有的同行使用状态码来解决频繁访问的问题,这种技术原理是对于某些相关联的数据块,将其看作一个整体,(程序)运行时缓存于本地缓存中,同时将状态码(这里说的状态码也可以是版本号)也存起来,这样每次需要这部分数据时,比较当前缓存的状态码(版本号)与数据库中的是否一致,如果不一致,说明数据库中的数据已经改变,需要重新获取,如果一致,直接使用缓存中数据,不再请求数据库。当然有的人会开一个新的线程来定时查询状态码是否改变以更新缓存数据,这样程序每次需要数据时读取的都会是缓存中的数据。
一些大型的网站甚至会把用户列表做在缓存中,以版本号的方式来实时更新,以提升用户的体验。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询