我们如何在运行java web应用程序的服务器端缓存MySQL查询?
例如: 如果大多数客户要求填写需要选择州和城市的表格。那么,如何在服务器端缓存该查询呢。因为州或城市名称几乎不会更改,所以最好将它们缓存起来我们如何在运行java web应用程序的服务器端缓存MySQL查询?,java,mysql,caching,Java,Mysql,Caching,例如: 如果大多数客户要求填写需要选择州和城市的表格。那么,如何在服务器端缓存该查询呢。因为州或城市名称几乎不会更改,所以最好将它们缓存起来 Table 1: state_name state_id __________ ________ state1 1 state2 2 Table 2: city_name city_id state_id _________ _______ ________ city1 1
Table 1:
state_name state_id
__________ ________
state1 1
state2 2
Table 2:
city_name city_id state_id
_________ _______ ________
city1 1 1
city2 2 1
city3 3 2
创建州的列表
和[城市、州]对的地图
,并将其作为静态只读数据放在服务器上。启动时从数据库加载它
我推荐一个WeakHashMap
作为您的实现。如果绝对必要,它将给GC一个逐出值的机会
州的数量不会改变,但城市列表可能相当大。创建州的列表和[城市,州]对的地图,并将其作为静态只读数据放在服务器上。启动时从数据库加载它
我推荐一个WeakHashMap
作为您的实现。如果绝对必要,它将给GC一个逐出值的机会
州的数量不会改变,但城市列表可能相当大。默认情况下,Mysql将在其查询缓存中缓存查询-
缓存的大小当然是有限的,因此如果运行其他查询,结果可能会被逐出-但是如果频繁执行此查询,mysql查询缓存可能足以满足您的需要。mysql默认情况下将在其查询缓存中缓存查询-
当然,缓存的大小是有限的,因此如果运行其他查询,结果可能会被逐出-但是如果频繁执行此查询,mysql查询缓存可能足以满足您的需要。能否提供有关您的环境的更多信息?在服务器端缓存查询结果的方法大约有10亿种……您能提供有关您的环境的更多信息吗?在服务器端缓存查询结果的方法大约有10亿种……这(启动时加载)正是我们使用config对象所做的。然后我们做一些事情,比如config.getProperties(“states”)
(我们的“config”不是javaProperties
对象,但我们还是决定使用getProperties作为方法名)。我们的配置实际上是从各种来源加载的-数据库,一些.properties
,等等-但是程序的其余部分并不关心这些来源。我们还有一个“重新加载”方法,以防这些内容发生任何更改,因此我们不必重新启动以获取更改。@duffymo请您用上述数据给出一个示例。对不起,我没有在命令上发布代码。您应该知道如何使用JDBC进行选择,并将结果映射到列表或映射中。如果你不这样做,你就不应该编写这个应用程序。这(启动时加载)正是我们使用配置对象所做的。然后我们做一些事情,比如config.getProperties(“states”)
(我们的“config”不是javaProperties
对象,但我们还是决定使用getProperties作为方法名)。我们的配置实际上是从各种来源加载的-数据库,一些.properties
,等等-但是程序的其余部分并不关心这些来源。我们还有一个“重新加载”方法,以防这些内容发生任何更改,因此我们不必重新启动以获取更改。@duffymo请您用上述数据给出一个示例。对不起,我没有在命令上发布代码。您应该知道如何使用JDBC进行选择,并将结果映射到列表或映射中。如果你没有,你就不应该写这个应用。