jakarta-jcs-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From emily chen <emilychen_2...@yahoo.com>
Subject Re: JCS thread safe question.
Date Fri, 23 Jun 2006 20:41:06 GMT
Hi Aaron,
   
  If I don't use a lock, thread 1 gets the report from cache by key, not data found, so it
goes to DB to get the report;  before it puts the report into cache, thread 2 accesses the
cache by the same key, and can not find the report, so it goes to DB to get the data again.
That means two thread will access DB twice. But I want they just acces DB only one time to
get the same report.
   
  In my web application, it takes serval mins to run a long report. Does it make sense to
use a lock to reduce DB access?
   
  Thanks,
   
  Lucy
   
  

Aaron Smuts <asmuts@yahoo.com> wrote:
  I don't understand what you need a lock for. You can
go get the report, and then put it in the cache under
the same key. You don't need to lock the key. Until
the new report is ready, client will get the old one
from the cache. Simply put the new value in the cache
under the smae key name and it will replace the old
value.

Aaron

--- emily chen wrote:

> Hi Aaron,
> 
> I got you. I will implement the lock in my web
> application.
> 
> Many thanks,
> 
> Lucy
> 
> Aaron Smuts wrote:
> Of course JCS is Thread safe, if you mean that it
> can
> handle multiple threads accessing the same regions
> at
> the same time. 
> 
> It doesn't work the way you described, but it is
> thread safe. You won't get a corrupted value for a
> key. 
> 
> As for the memory cache, it is a reference cache. It
> returns references to objects in memory. It does not
> clone the values. If you are manipulating objects
> that are in the cache, any other Thread could get a
> reference to that same object. . .. It is best to
> clone objects that are retrieved from the cache
> prior
> to modifying them or just don't modify objects that
> have been put in the cache.
> 
> Aaron
> 
> --- emily chen wrote:
> 
> > Hi there,
> > 
> > I want to use JCS for my web application, and have
> > some thread safe question.
> > 
> > Here is scenario: 
> > 
> > I have a JCS cache named
> �ePINBatchReportCache�?
> > which is used to save the ePIN Batch Report data.
> > 
> > Thread 1:
> > 1) Get report data from Cache for key.
> > 2) If not data found in the cache, then lock
> > the cache for that key.
> > 3) Get report data from database.
> > 4) Put the report data in cache for key
> > 5) Release lock for that key.
> > 
> > Thread 2:
> > 1) Get the data from cache for key.
> > 2) Wait for lock to be released (should have
> > max wait time here).
> > 3) Get the data from cache.
> > 
> > Does JCS have the above functionality -- lock the
> > key of cache? Or I have to put lock on the key in
> > my web application source code?
> > 
> > Thank for your help.
> > 
> > Lucy 
> > 
> > 
> > ---------------------------------
> > Yahoo! Messenger with Voice. Make PC-to-Phone
> Calls
> > to the US (and 30+ countries) for 2�?min or
less.
> 
> 
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> jcs-users-unsubscribe@jakarta.apache.org
> For additional commands, e-mail:
> jcs-users-help@jakarta.apache.org
> 
> 
> 
> 
> ---------------------------------
> Yahoo! Messenger with Voice. PC-to-Phone calls for
> ridiculously low rates.


---------------------------------------------------------------------
To unsubscribe, e-mail: jcs-users-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jcs-users-help@jakarta.apache.org



 		
---------------------------------
Ring'em or ping'em. Make  PC-to-phone calls as low as 1¢/min with Yahoo! Messenger with Voice.
Mime
  • Unnamed multipart/alternative (inline, 8-Bit, 0 bytes)
View raw message