|
|
Re: memcache(3) 1.2.0 released...: msg#00035
web.cache.memcached
|
Subject: |
Re: memcache(3) 1.2.0 released... |
Andrei Nigmatulin wrote:
В Срд, 12.01.2005, в 22:15, John McCaskey пишет:
On Wed, 2005-01-12 at 22:03 +0300, Antony Dovgal wrote:
On Wed, 12 Jan 2005 11:02:01 -0800
John McCaskey <johnm@xxxxxxxx> wrote:
If the get() command however returns a FALSE for either my stored
FALSE value or for a miss, then I will always have to assume its a
miss and hit the slow storage everytime I retrieve a FALSE. Am I
missing something here? I can't see it if so.
Yup, you're missing "===" operator.
empty string == false, but empty string !== false.
http://www.php.net/manual/en/language.operators.comparison.php
Sure, but an empty string is not the same as a FALSE if I am storing
both and considering them distinct. I know about ===. But I want to
get exactly what I store back from memcached, if I store an '' or a
FALSE then I should get exactly a '' or a FALSE in return and when I
test with === it should match up.
As i understand, memcached only stores and retrives strings and does not
handle anything else, for example boolean. That's because internally,
memcached stores raw bytes and a length, but does not store a type of
data.
The only Right Way i see here is to store TRUE and FALSE as "1" and "0"
strings.
Though memcached only stores raw data, if you serialize the data in php,
it stores the type of data as a string. It won't be as compact as you
might be able to get away with, but it will preserve type as well as value.
I suggest having get() return false when it has a cache miss. If you
want to be able to store ANY type of data, then it doesn't matter what
you return, it will conflict with something. To get around that, have
get_multi() return an array with only the values that exist. For a call
of a single key that resulted in a cache miss, it'd return an empty
array. The current pure php library does that, though my pecl wrapper
does not (as I don't know how to detect the difference between a cache
miss and a value of false).
Timo
|
|