Redis を起動して、いじっています。以下はうまくいきます:
SET billybob "hello"
+OK
ただし、次の場合は失敗します。
SET billybob "hey how are you"
-ERR syntax error
SET は任意のキー/値に対して機能すると思いましたが、おそらく値は任意の文字列にすることができます...しかし、スペースを含む文字列ではありませんか? ここでの話は何ですか?
多分それはバージョン関連です。これはここで機能します:
$ redis-cli --version
redis-cli 2.8.3
$ redis-cli SET billybob "hey how are you"
OK
$ redis-cli GET billybob
"hey how are you"
@jm3 代わりに redis-cli に「-x」コマンドラインオプションを使用してください。文字列の最後に「\n」が追加されることに注意してください。
$ echo "hey how are you"
hey how are you
$ echo "hey how are you" | redis-cli --pipe SET billybob
All data transferred. Waiting for the last reply...
ERR unknown command 'hey'
Last reply received from server.
errors: 1, replies: 1
$ echo "hey how are you" | redis-cli -x SET billybob
OK
$ redis-cli GET billybob
"hey how are you\n"
HTH
バーニー
あなたはtelnetでコマンドを実行しているようです。基本的に、redis は低レベルのテキスト プロトコルに基づいてテキスト ベースのコマンドを実装します。要求/応答には、$ * などの特殊文字の前に付いた複数のテキスト行、またはその長さが前に付いた文字が含まれる場合があります。
また、便宜上、redis はインライン コマンドもサポートしています。
このため、Redis は、人間用に設計されたインライン コマンド形式と呼ばれる特別な方法でコマンドを受け入れることもできます。(こちらをご覧ください)
入力した最初のコマンドはインライン コマンドで、機能します。2番目のものにはスペースがあるため、インラインコマンドではなく、壊れています。
したがって、インライン コマンドを使用して、スペースを含む set コマンドを送信できます。
*3
$3
set
$8
billybob
$15
hey how are you
+OK