我想知道对用户数据使用 ConcurrentHashMaps 是否有用。我将用户数据保存在 mysql 数据库中,并在用户登录(或有人编辑用户)时检索它们。每次用户进入另一个页面时,这些用户数据都会被刷新。我应该使用地图并在那里保存我的应用程序中的更改,同时在后台有一个数据库,还是应该直接从数据库下载它。我想让应用程序尽可能高性能。
3 回答
胡说叔叔
TA贡献1804条经验 获得超8个赞
您所描述的是缓存。假设调用数据库的成本很高,因为要加载很多信息,或者用于提取数据的查询很复杂并且需要很多时间。缓存数据结构在这里发挥作用。它基本上是一种内存存储,查询数据库确实更快,因为它确实已经加载到内存中。
填充缓存的过程与在数据库中查询数据所需的时间相同(通常更多但顺序相同)。因此,只有在及时带来好处时才使用缓存。但是,速度与数据的新鲜度之间存在折衷。根据您的用例,您必须在这两者之间找到正确的折衷方案,然后您会发现它是否真的方便。
正如您所描述的那样,即需要保存和显示的用户更新,使用缓存似乎有点过分IMO,除非您有很多注册用户,而且其中有很多同时使用系统。如果您决定使用它,请记住一些可能会出现的并发问题。并发哈希映射可以使您免于许多危险,但会降低性能。
吃鸡游戏
TA贡献1829条经验 获得超7个赞
如果性能是优先级,我认为您应该将登录的用户保留在内存中。
这样,读取请求会很快,因为您不需要查询数据库。但是,如果任何登录的用户会以某种方式被编辑,您将需要更新地图。
冉冉说
TA贡献1877条经验 获得超1个赞
人类无法分辨 1 毫秒延迟和 50 毫秒延迟之间的区别。因此,超出“足够好”的优化是矫枉过正的。
MySQL 已经做了一些缓存。您添加另一个缓存实际上可能会减慢响应时间。
添加回答
举报
0/150
提交
取消