code: @ManagedOperation
      public void put(K key, V val, long caching_time) {
          Address dest_node=getNode(key);
          if(dest_node.equals(local_addr)) {
              l2_cache.put(key, val, caching_time);
          }
          else {
              sendPut(dest_node, key, val, caching_time, false);
          }
          if(l1_cache != null && caching_time >= 0)
              l1_cache.put(key, val, caching_time);
      }
docs: Adds a key/value to the cache, replacing a previous item if there was one
  @param key The key
  @param val The value
  @param caching_time Time to live. -1 means never cache, 0 means cache forever. All other (positive) values
  are the number of milliseconds to cache the item