I realize that I always get the same cache. I am just wondering if it creates an overhead to always call the factory or not.
Viðar On Wed, May 26, 2010 at 1:27 PM, Rahul Juneja <[email protected]> wrote: > You can call the factory any times it doesn't matter it will return you the > same cache. > Thanks, > Rahul > ---------------------------------------------------------- > Rahul Juneja > http://techlabs.thoughtclicks.com > > > 2010/5/26 Viðar Svansson <[email protected]> >> >> I am curious, does it matter if I call the factory each time I need an >> instance of MemcacheService? I am trying to keep the startup time to >> minimum so it would be good to know. Currently I create a global >> instance on startup which may or may not be used by the request. >> >> Cheers, >> Viðar >> >> On Wed, May 26, 2010 at 3:15 AM, Rahul <[email protected]> wrote: >> > A Quick update, I tried this with low level google api and that seems >> > to work perfectly fine and i am able to retrieve values from the >> > existing cache and don't load it from db everytime hence reduces my >> > jvm restart load time by 3-4 seconds. >> > >> > Not sure what jsr 107 was not working. >> > >> > Thanks, >> > Rahul >> > >> > >> > On May 25, 10:24 pm, Rahul <[email protected]> wrote: >> >> Ikai, >> >> >> >> I am guessing i am wrong somewhere in designing this cache solution. >> >> Would appreciate if you can tell me where am i going wrong on this. >> >> Let me try to explain it once again. >> >> >> >> I have a set of properties which i load on first call to the service. >> >> and the code I call in the service is as follows. >> >> >> >> PropertiesCache _cache = PropertiesCache.getInstance(); >> >> >> >> My PropertiesCache is as follows. >> >> ------------------------------------------------------------------- >> >> public class PropertiesCache { >> >> private static final Logger log = >> >> Logger.getLogger(PropertiesCache.class.getName()); >> >> >> >> private static PropertiesCache _instance; >> >> private Cache cache; >> >> private PropertiesCache() { >> >> try { >> >> log.info("In the PropertiesCache constructor"); >> >> cache = >> >> >> >> CacheManager.getInstance().getCacheFactory().createCache(Collections.emptyMap()); >> >> //Loading the cache from the database. >> >> //cache.put(Object, Object); >> >> } catch (CacheException e) { >> >> log.severe("Error in creating the Loading >> >> Cache"); >> >> } >> >> >> >> public static synchronized PropertiesCache getInstance() { >> >> if (_instance == null) { >> >> _instance = new PropertiesCache(); >> >> }else{ >> >> log.info("Using existing cache instance and NO >> >> NEW Instance is >> >> created"); >> >> } >> >> >> >> return _instance; >> >> } >> >> >> >> Also, Let me re-iterate what you said, you are suggesting me not to >> >> play around with instance variable instead use the cache variable and >> >> is there any way i can fetch the cache variable once the jvm restarts. >> >> >> >> Appreciate all the efforts. >> >> >> >> Thanks, >> >> Rahul >> >> On May 25, 5:08 pm, "Ikai L (Google)" <[email protected]> wrote: >> >> >> >> > The instance itself will be recreated. If you store a value into >> >> > Memcache, >> >> > it will likely be there the next time you retrieve it. Try this out. >> >> >> >> > It's not necessary to do what you've done here. When you create a >> >> > Cache >> >> > instance, you're really just creating a client to the cache, and you >> >> > can do >> >> > this each time you need it. There's no need to create a global, >> >> > long-lived >> >> > instance. What you're seeing is perfectly normal - Java objects will >> >> > not >> >> > have a longer lifespan than the JVM. If the JVM dies, so will all the >> >> > instantiated objects. >> >> >> >> > On Tue, May 25, 2010 at 1:28 PM, Rahul <[email protected]> >> >> > wrote: >> >> > > Toby, >> >> >> >> > > I also had the same opinion but as you can see the previous code i >> >> > > have given populates the cache again. I guess i am doing something >> >> > > wrong. Appreciate if you can look at that and let me know if i have >> >> > > to >> >> > > do something which i missing. >> >> >> >> > > Thanks, >> >> > > Rahul >> >> >> >> > > On May 25, 4:00 pm, Toby Reyelts <[email protected]> wrote: >> >> > > > Rahul, >> >> >> >> > > > If you're using App Engine's MemcacheService directly (or >> >> > > > indirectly, for >> >> > > > example through our JSR 107 support), then you are talking to >> >> > > > backend >> >> > > > memcache instances that have lifetimes separate from your JVMs. >> >> >> >> > > > I.E. MemcacheServiceFactory.getMemcacheService< >> >> > >> >> > > >http://code.google.com/appengine/docs/java/javadoc/com/google/appengi...() >> >> >> >> > > > does >> >> > > > not create a new memcache backend - it just "connects" to an >> >> > > > existing >> >> > > one. >> >> > > > You have one logical memcache backend that is shared between all >> >> > > > of your >> >> > > > application's JVMs. >> >> >> >> > > > On Tue, May 25, 2010 at 3:12 PM, Rahul <[email protected]> >> >> > > > wrote: >> >> > > > > Ikai, >> >> >> >> > > > > I am not sure what you mean by Memcache instances stays up >> >> > > > > because i >> >> > > > > tried the following code and everytime when a new jvm instance >> >> > > > > is >> >> > > > > created, the cache instance is also created again. Below is the >> >> > > > > code i >> >> > > > > am using, let me know if i am missing anything or not doing >> >> > > > > anything >> >> > > > > correct. >> >> >> >> > > > > Request comes from the following code: >> >> >> >> > > > > MyCache _cache = MyCache.getInstance(); >> >> > > > > redirectUrl = _cache.findInCache(requestedURI); >> >> >> >> > > > > MyCache Class: >> >> >> >> > > > > private static MyCache _instance; >> >> > > > > private Cache cache; >> >> >> >> > > > > public static synchronized MyCache getInstance() { >> >> > > > > if (_instance == null) { >> >> > > > > _instance = new MyCache(); >> >> > > > > }else{ >> >> > > > > log.info("Using existing cache instance >> >> > > > > and NO >> >> > > NEW >> >> > > > > Instance is >> >> > > > > created"); >> >> > > > > } >> >> >> >> > > > > return _instance; >> >> > > > > } >> >> >> >> > > > > and in the constructor i am creating new cache fetching >> >> > > > > everything >> >> > > > > from the database. >> >> >> >> > > > > Also, i have a listener in place which tells me when the new >> >> > > > > jvm >> >> > > > > instance is started. >> >> >> >> > > > > Thanks, >> >> > > > > Rahul >> >> >> >> > > > > On May 24, 3:56 pm, "Ikai L (Google)" <[email protected]> >> >> > > > > wrote: >> >> > > > > > Memcache instances stay up. They're shared, namespaced >> >> > > > > > (security) >> >> > > > > instances >> >> > > > > > and will more likely than not outlive the lifecycles of your >> >> > > application >> >> > > > > > instances. >> >> >> >> > > > > > On Sun, May 23, 2010 at 11:17 PM, Tristan < >> >> > > [email protected] >> >> > > > > >wrote: >> >> >> >> > > > > > > Does anyone know the answer to this: >> >> >> >> > > > > > > If all the JVMs are killed, does the memcache stick around >> >> > > > > > > or is it >> >> > > > > > > recycled? (I know memcache expires eventually, just curious >> >> > > > > > > if it >> >> > > is >> >> > > > > > > possible for it to carry data across JVM valley of death) >> >> >> >> > > > > > > Cheers, >> >> >> >> > > > > > > Tristan >> >> >> >> > > > > > > -- >> >> > > > > > > You received this message because you are subscribed to the >> >> > > > > > > Google >> >> > > > > Groups >> >> > > > > > > "Google App Engine for Java" group. >> >> > > > > > > To post to this group, send email to >> >> > > > > > > [email protected]. >> >> > > > > > > To unsubscribe from this group, send email to >> >> > > > > > > >> >> > > > > > > [email protected]<google-appengine-java%[email protected]><google-appengine-java%2B >> >> > > [email protected]><google-appengine-java%2B >> >> > > > > [email protected]> >> >> > > > > > > . >> >> > > > > > > For more options, visit this group at >> >> > > > > > >http://groups.google.com/group/google-appengine-java?hl=en. >> >> >> >> > > > > > -- >> >> > > > > > Ikai Lan >> >> > > > > > Developer Relations, Google App Engine >> >> > > > > > Twitter:http://twitter.com/ikai >> >> > > > > > Delicious:http://delicious.com/ikailan >> >> >> >> > > > > > ---------------- >> >> > > > > > Google App Engine links: >> >> > > > > > Blog:http://googleappengine.blogspot.com >> >> > > > > > Twitter:http://twitter.com/app_engine >> >> > > > > > Reddit:http://www.reddit.com/r/appengine >> >> >> >> > > > > > -- >> >> > > > > > You received this message because you are subscribed to the >> >> > > > > > Google >> >> > > Groups >> >> > > > > "Google App Engine for Java" group. >> >> > > > > > To post to this group, send email to >> >> > > > > [email protected]. >> >> > > > > > To unsubscribe from this group, send email to >> >> > > > > >> >> > > > > [email protected]<google-appengine-java%[email protected]><google-appengine-java%2B >> >> > > [email protected]> >> >> > > > > . >> >> > > > > > For more options, visit this group athttp:// >> >> > > > > groups.google.com/group/google-appengine-java?hl=en. >> >> >> >> > > > > -- >> >> > > > > You received this message because you are subscribed to the >> >> > > > > Google >> >> > > Groups >> >> > > > > "Google App Engine for Java" group. >> >> > > > > To post to this group, send email to >> >> > > > > [email protected]. >> >> > > > > To unsubscribe from this group, send email to >> >> > > > > >> >> > > > > [email protected]<google-appengine-java%[email protected]><google-appengine-java%2B >> >> > > [email protected]> >> >> > > > > . >> >> > > > > For more options, visit this group at >> >> > > > >http://groups.google.com/group/google-appengine-java?hl=en. >> >> >> >> > > -- >> >> > > You received this message because you are subscribed to the Google >> >> > > Groups >> >> > > "Google App Engine for Java" group. >> >> > > To post to this group, send email to >> >> > > [email protected]. >> >> > > To unsubscribe from this group, send email to >> >> > > >> >> > > [email protected]<google-appengine-java%[email protected]> >> >> > > . >> >> > > For more options, visit this group at >> >> > >http://groups.google.com/group/google-appengine-java?hl=en. >> >> >> >> > -- >> >> > Ikai Lan >> >> > Developer Programs Engineer, Google App Engine >> >> > Twitter:http://twitter.com/ikai >> >> > Delicious:http://delicious.com/ikailan >> >> >> >> > ---------------- >> >> > Google App Engine links: >> >> > Blog:http://googleappengine.blogspot.com >> >> > Twitter:http://twitter.com/app_engine >> >> > Reddit:http://www.reddit.com/r/appengine >> >> >> >> >> > >> > -- >> > You received this message because you are subscribed to the Google >> > Groups "Google App Engine for Java" group. >> > To post to this group, send email to >> > [email protected]. >> > To unsubscribe from this group, send email to >> > [email protected]. >> > For more options, visit this group at >> > http://groups.google.com/group/google-appengine-java?hl=en. >> > >> > >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Google App Engine for Java" group. >> To post to this group, send email to >> [email protected]. >> To unsubscribe from this group, send email to >> [email protected]. >> For more options, visit this group at >> http://groups.google.com/group/google-appengine-java?hl=en. >> > > -- > You received this message because you are subscribed to the Google Groups > "Google App Engine for Java" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/google-appengine-java?hl=en. > -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
