Opened 18 years ago
Closed 18 years ago
#3241 closed enhancement (wontfix)
[patch] memcached backend can't use keys containing spaces
Reported by: | Owned by: | Jacob | |
---|---|---|---|
Component: | Core (Cache system) | Version: | dev |
Severity: | normal | Keywords: | memcached |
Cc: | Triage Stage: | Design decision needed | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
I wanted to use memcached to cache pages whose URLs contain spaces, but was told 'Client.MemcachedKeyCharacterError, "Control characters not allowed"'. The memcache module refuses to use keys longer than 250 characters or containing "control characters", which it defines as anything with a decimal ASCII code below 33 -- which includes the space character.
So the attached memcached backend uses a hash (SHA1) of the URL as the cache key as necessary. Seems to perform OK in my limited seat-of-the-pants usage; I suppose urllib.quote might be faster, but wouldn't help with long URLs.
Attachments (1)
Change History (4)
by , 18 years ago
Attachment: | memcached.py added |
---|
comment:1 by , 18 years ago
Summary: | memcached backend can't use keys containing spaces → [patch] memcached backend can't use keys containing spaces |
---|
comment:2 by , 18 years ago
Triage Stage: | Unreviewed → Design decision needed |
---|
comment:3 by , 18 years ago
Resolution: | → wontfix |
---|---|
Status: | new → closed |
This is something you'll need to deal with in your client code; hashing the cache keys makes it nearly impossible to introspect the cache.
revision of memcached backend that can handle keys > 250 characters or containing spaces