Thanks. I committed this patch. I made a few small changes. note: - I found an extra semi colon. This would break with some compilers. - I improved the comment on foundprunekeys in CompiteCache. - The lateral concurrent test was not named with a unit suffix, because it is not a unit test. This one is too slow. - If you change the project.xml you have to change the pom.xml too.
Aaron --- Chris Fairbanks <[EMAIL PROTECTED]> wrote: > In order to help optimize for network latency when > dealing with distributed > cache servers, I'd like to add the ability to fetch > multiple cache elements > at once from a JCS cache. I've done the following > by adding a > getCacheElements method which takes in a Set of keys > and returns a map of > key->cached value. > > The logic in each implementation goes as follows, > for the most part: iterate > over the set of keys and call out to the > already-existing get method, then > put the results into a map based on the key, then > return it. I didn't do > any optimization like bundling the MySQL calls into > a single get query with > multiple key values, although that would be an > obvious followup. When > relevant (as in the CacheAccess class), > getCacheElements simply calls out to > getMultiple on its ICache instance. > > I'm attaching a diff patch with the changes I made > in order to achieve > this. It's almost entirely additional methods, plus > some javadocs cleanup > where I saw problems. We've been using this code in > locally-compiled jar > form in our development environment for some time > now without negative > impact, but we'd like to get it into the main JCS > build if possible. > > Thanks, > Chris Fairbanks > > In ICacheAccess interface: > > /** > * Get multiple elements from the cache based on > a set of cache keys. > * <p> > * This method returns the ICacheElement wrapper > which provides access > to element info and other > * attributes. > * <p> > * This returns a reference to the wrapper. Any > modifications will be > reflected in the cache. No > * defensive copy is made. > * <p> > * This method is most useful if you want to > determine things such as > the how long the element > * has been in the cache. > * <p> > * The last access time in the ElementAttributes > should be current. > * <p> > * @param names set of Object cache keys > * @return a map of Object key to ICacheElement > element, or empty map if > none of the keys are present > */ > Map getCacheElements( Set names ); > > In ICache interface: > > /** > * Gets multiple items from the cache based on > the given set of keys. > * <p> > * @param keys > * @return a map of Serializable key to > ICacheElement element, or an > empty map if there is no data in cache for any of > these keys > * @throws IOException > */ > Map getMultiple( Set keys ) > throws IOException; > > In ICacheService interface: > > /** > * Gets multiple items from the cache based on > the given set of keys. > * <p> > * @param cacheName > * @param keys > * @return a map of Serializable key to > ICacheElement element, or an > empty map if there is no data in cache for any of > these keys > * @throws ObjectNotFoundException > * @throws IOException > */ > Map getMultiple( String cacheName, Set keys ) > throws ObjectNotFoundException, IOException; > > --------------------------------------------------------------------- > To unsubscribe, e-mail: > [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
