我想知道将ConcurrentHashMaps用于用户数据是否有用。我将用户数据保存在mysql数据库中,并在用户登录时检索它们(或者有人编辑用户)。每一个......
如果性能是优先级,我认为你应该将记录的用户留在内存中。
这样,读取请求会很快,因为您不需要查询数据库。但是,如果以某种方式编辑任何已记录的用户,则需要更新映射。
你所描述的是一个 高速缓存 。假设对数据库的调用成本很高,因为要加载大量信息,或者用于提取数据的查询很复杂且需要大量时间。这里有缓存数据结构。它基本上是一个内存存储器,它可以更快地查询数据库,因为它确实已经加载到内存中。
填充缓存的过程与查询数据的db需要相同的时间(通常更多但是以相同的顺序)。因此,只有在及时带来好处时才使用缓存是有意义的。但是有一个妥协, 速度 VS 新鲜 数据的。根据您的使用情况,您必须在这两者之间找到正确的妥协方案,然后您将发现它是否真的很方便。
正如你所描述的那样,即需要保存和显示的用户更新,使用缓存似乎有点过分的IMO,除非你有很多注册用户,并且很多人同时使用系统。如果您决定使用它,请记住可能会出现的一些并发问题。并发哈希映射可以避免许多危险,但性能会受到影响。
人类无法区分1ms延迟和50ms延迟之间的区别。因此优化超出“足够好”是过度的。
MySQL已经有了缓存的味道;添加另一个缓存实际上可能会减慢响应时间。