Read expires?

2010-04-07 Thread Bill Moseley
I thought this was a FAQ -- or at least I have memory of this being
discussed here before.

I have one process that uses memcached for throttling by setting a key with
a timeout.  If the set fails (NOT_STORED, as the FAQ describes) then the
process waits.

The question came up yesterday at work if a process can query the time
remaining for a given key.  I thought I remembered that there was no way to
read the timeout value on an existing key, but I'm not having any luck this
morning finding discussion of this.  Can someone confirm this -- or point me
to documentation/discussion about this?

Also, Is there a way to test that a key exists other than a get()?  I know
with the throttling example an add() is used, but I don't want to add a new
value if it doesn't exist.  Perhaps premature optimization, but can a
process check that a key exists and not transfer the value when the data is
not needed?

Thanks,


-- 
Bill Moseley
mose...@hank.org


Re: Read expires?

2010-04-07 Thread dormando
 I thought this was a FAQ -- or at least I have memory of this being discussed 
 here before.

 I have one process that uses memcached for throttling by setting a key with a 
 timeout.  If the set fails (NOT_STORED, as the FAQ describes)
 then the process waits.

 The question came up yesterday at work if a process can query the time 
 remaining for a given key.  I thought I remembered that there was no
 way to read the timeout value on an existing key, but I'm not having any luck 
 this morning finding discussion of this.  Can someone confirm
 this -- or point me to documentation/discussion about this?

No way to fetch this in the protocol... You can embed it in your object if
you want.

 Also, Is there a way to test that a key exists other than a get()?  I know 
 with the throttling example an add() is used, but I don't want
 to add a new value if it doesn't exist.  Perhaps premature optimization, but 
 can a process check that a key exists and not transfer the
 value when the data is not needed?

No dice there either. You can do an 'add' of a zero byte object with an
expiration of 1 second. Or uh... if you set the expiration to be  30 days
it's accepted as a date, so I think you can backdate it and have it expire
immediately? Can't remember offhand if that actually works.

Usually it's a premature optimization or a flow problem if you need to do
that though. Real cases have been rare.

-- 
To unsubscribe, reply using remove me as the subject.