有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在每个请求上获取memcache变量导致问题

我使用gaemcache在每个请求上获取一个布尔值。此布尔值是启用/禁用特定url的标志

如果为真,则一切正常;如果为假,则返回特定格式的响应

这项服务每秒处理7个请求,问题是谷歌似乎对访问memcache设置了限制,而从几天前开始,这项获取一直以每秒1个请求的速度失败,因此这一过程变得完全不可靠。我必须做一个紧急补丁从代码中删除这个检查。但我需要一个替代例程来启用/禁用该服务

使用servlet实例变量是一种选择,但每个jvm实例都有自己的变量,因此无法工作

有人能建议一种方法吗


共 (2) 个答案

  1. # 1 楼答案

    为了保持一致性,最好使用数据存储/事务而不是memcache

    为了减少数据存储/事务的延迟,您可以尝试混合使用memcache和数据存储/事务方法。比如说

    # while reading status 
    # 1. try to read from memcache
    # 2. if memcache exists, return the value
    # 3. if not, read from datastore, save to memcache, and return
    
    # while writing status
    # 1. use a transaction to write data to datastore and memcache
    
  2. # 2 楼答案

    对访问memcache的频率没有限制(除了健全性检查)。但是,无论如何,您都不应该仅仅依靠memcache来存储值;您应该始终有一个回退到永久存储机制(如数据存储)的方法