有的时候需要导入大量的数据到redis中,如何快速操作呢
使用redis-cli客户端
http://www.redis.cn/topics/batch-insert.html
server$ vim d1.txt
set myk12 v1
zadd zset12 0 a 1 b 3 c
sadd sset12 e f g hh
set myk22 v2
hset myset12 k1 v1
hmset myset22 k2 v2 k3 v3 k4 v4
set myk32 v3
server> unix2dos d1.txt
unix2dos: converting file d1.txt to DOS format...
server> cat d1.txt | redis-cli
OK
(integer) 3
(integer) 4
OK
(integer) 1
OK
OK
server> cat d1.txt | redis-cli --pipe
All data transferred. Waiting for the last reply...
Last reply received from server.
errors: 0, replies: 7
server> cat d1.txt | redis-cli -p 6380 -h 192.168.1.166 --pipe
All data transferred. Waiting for the last reply...
Last reply received from server.
errors: 0, replies: 7
方案2
[root@xiaoyu bin]# cat redis_commands.txt
12345678
76547654
32456475
87676543
[root@xiaoyu bin]# cat open_status.sh
#!/bin/bash
while read X; do
# each command begins with *{number arguments in command}\r\n
printf "*4\r\n"
printf "\$4\r\n"
printf "hset\r\n"
printf "\$20\r\n"
echo -n "${X}.tos"
printf "\r\n"
printf "\$3\r\n"
printf "tom\r\n"
printf "\$4\r\n"
printf "\\x00\\00\\00\\01\r\n"
done < redis_commands.txt
[root@xiaoyu bin]# sh switch_open_status.sh > dd.txt
[root@xiaoyu bin]# cat dd.txt |redis-cli -p 6380 --pipe
All data transferred. Waiting for the last reply...
Last reply received from server.
errors: 0, replies: 9