Я использую Redis-3.2.1, Python-3.6, Powershell-v1.0 и Windows 7. Я пытаюсь выполнить массовую вставку в Redis.Я создал файл массовой вставки с протоколом RESP в Python 3.6.Когда я выполняю «cat redis_data.txt | redis-cli --pipe» в Powershell, возникает следующая ошибка:
PS C:\Users\shiner> cat redis_data.txt | redis-cli --pipe
ERR Protocol error: expected '$', got ' '
All data transferred. Waiting for the last reply...
No replies for 30 seconds: exiting.
errors: 2, replies: 1
(я новичок в powershell, поэтому имейте это в виду)
Вот мой код Python:
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
import sys
def gen_redis_proto(*args):
proto = ""
proto += "*"+str(args.__len__())+"\r\n"
for arg in args:
proto += "$"+str(str(arg).__len__())+"\r\n"
proto += str(arg)+"\r\n"
return proto
def generate_data_file():
f = open('redis_data.txt', 'w')
[f.write(gen_redis_proto("SET", "KEY{0}".format(x),
"VALUE{0}".format(x)))
for x in range(0, 400)]
generate_data_file()
Пример текстового файла выглядит следующим образом:
"* 3 $ 3SET $ 4KEY0 $ 6VALUE0 * 3 $ 3SET $ 4KEY1 $ 6VALUE1 *3 $ 3set $ 4KEY2 $ 6VALUE2 * 3 $ 3set $ 4KEY3 $ 6VALUE3 * 3 $ 3set $ 4KEY4 $ 6VALUE4 * 3 $ 3set $ 4KEY5 $ 6VALUE5 * 3 $ 3set $ 4KEY6 $ 6VALUE6 * 3 $ 3set $ 4KEY7 $ 6VALUE7 * 3 $ 3SET $ 4KEY8 $ 6VALUE8 * 3 $ 3set $ 4KEY9 $ 6VALUE9 * 3 $ 3set $ 5KEY10 $ 7VALUE10 * 3 $ 3set $ 5KEY11 $ 7VALUE11 * 3 $ 3set $ 5KEY12 $ 7VALUE12 * 3 $ 3set $ 5KEY13 $ 7VALUE13 * 3 $ 3set $ 5KEY14 $ 7VALUE14 ... Value399 '
' Value399 '- это последние 8 символов в текстовом файле.