What is a valid key?

J J j at jawed.name
Thu Dec 20 19:27:26 UTC 2007


memcached.c:

if (*e == ' ') {

Aaron Stone wrote:
> Looks like a space, or is actually ASCII character 32?
>
> On Thu, Dec 20, 2007, dormando <dormando at rydia.net> said:
>
>   
>> Any independent byte (... octet) that looks like a space will be treated 
>> as a command token separator in the text protocol. In the binary 
>> protocol it's just a length.
>>
>> So if you have a utf8 character that's a valid non-space high byte for 
>> the first byte, but the second byte is a space, it'd break. I'm not even 
>> sure if that happens though.
>>
>> We're trying not to promote people get into situations where their keys 
>> will work with just one protocol or another, but we certainly can't stop 
>> people...
>>
>> -Dormando
>>
>> Kieran Benton wrote:
>>     
>>> No I don't think so :)
>>>
>>> But it is very convenient to just have to not worry about falling foul
>>> of not supported characters in keys. Its obviously an easy matter if you
>>> are building a site that is for use with memcached from the start, but
>>> if you are moving to memcached from another cache system (as I am) then
>>> it is a bit of a worry if delimiters you have previously been using
>>> might now be treated as erroneous.
>>>
>>> Are we saying that as long as you use UTF-8 for the key, and that it is
>>> not longer that 250 bytes, then all is fine with both text and binary
>>> protocols? If so then I think we should update the docs to say so and be
>>> happy :)
>>>
>>> - Kieran
>>>
>>> -----Original Message-----
>>> From: memcached-bounces at lists.danga.com
>>> [mailto:memcached-bounces at lists.danga.com] On Behalf Of Dustin Sallings
>>> Sent: 20 December 2007 17:58
>>> To: a.
>>> Cc: memcached at lists.danga.com
>>> Subject: Re: What is a valid key?
>>>
>>>
>>> On Dec 20, 2007, at 8:57, a. wrote:
>>>
>>>       
>>>> I haven't seen the server from inside (I only wrote a client), so  
>>>> maybe it's anoob question, but
>>>>
>>>> why do we have to treat the key as a "string"? Cannot be just  
>>>> treated as an array of bytes (whihc cannot contain some values  
>>>> listed earlier)? So we do not have to care about codepages and  
>>>> encodings and such?
>>>>         
>>> 	You could do that in the server using the binary protocol, but
>>> the  
>>> text protocol wouldn't be able to deal with it.  It'd be good to  
>>> remain limited to the lowest common denominator.
>>>
>>> 	I don't think anyone *really* cares about being able to use a
>>> jpeg as  
>>> a key.
>>>
>>>       
>>     
>
>   



More information about the memcached mailing list