Hi Patrick,
The protocol docs say that they key must not include control characters or whitespace, but as far as I can tell, the only really disallowed characters are space, CR and LF. Colon is absolutely not disallowed, simple testing shows you this:
set foo:bar 0 0 5
abcde
STORED
get foo:bar
VALUE foo:bar 0 5
abcde
END
Even TAB worked fine for me, so so much for the "no whitespace" rule:
set foo^Ibar 0 0 5
12345
STORED
get foo^Ibar
VALUE foo bar 0 5
12345
END
Control characters are fine too:
set foo^Gbar 0 0 4
beep
STORED
get foo^Gbar
VALUE foobar 0 4
beep
END
This is against version 1.2.5 on Windows, I hardly think other versions work differently, but different clients may or may not handle it nicely, so if you want to be safe, just strip out all characters at or below 32.
/Henrik