1

パイプモードでファイルと redis-cli を使用して redis に一括挿入したいという単純な問題。Redis のドキュメントでこれについて説明されています: http://redis.io/topics/mass-insert

私のファイルには、次のコマンドのみが含まれています。

HMSET client:1 name "Michael"

私のシェル(Ubuntu Linux)で試してみると:

cat data.txt | redis-cli --pipe

次のエラーが表示されます。

ERR unknown command '$4'
ERR wrong number of arguments for 'echo' command
ERR unknown command '$20'

他のユーザーが同じ問題を抱えているのを見てきました ( Redis 大量挿入の使用方法) が、良い解決策が見つかりませんでした。

どんな助けでも大歓迎です。

更新: 解決策

最後に、私にとって最良の選択肢は、Python で開発された redis クライアントを使用することでした。これは非常に簡単な解決策であり、要点は、redis プロトコルを直接使用/コーディングする必要がないことです。

redis-py クライアント ( https://github.com/andymccurdy/redis-py ) を選択します。インストール後、その機能を Python スクリプトにインポートできます。これは、私のスクリプトがどのように機能するかの例です。

import redis

# Connection to 0 database (default in redis)
r = redis.Redis(host="localhost",db=0)

# inserting client hashmaps
r.hmset('client:1', {'name':'John', 'company':'Microsoft'})
r.hmset('client:2', {'name':'James', 'company':'Apple'})

# inserting a list of domains for client 1
r.rpush('client:1:domains','www.microsoft.com','www.msn.com')

#to print values in stdout
print(r.hgetall('client:1'))
4

1 に答える 1

1

入力ファイルには、テキスト コマンドではなく、Redis プロトコルが含まれているはずです。

ここで例を参照してください: Redis Mass Insertion

Redis プロトコルはここで説明されています: http://redis.io/topics/protocol

于 2013-09-19T07:30:53.860 に答える