Redis
に100万(1,000,000)を追加すると問題ありません。
200万(2,000,000)レコードを追加するとエラーConnection reset by peer: socket write error
が表示されます。 1要素(4294967295、リストあたりの要素より40億) -Jedis lpushがRedisに100万レコード追加 - ピアによる接続リセット:ソケット書き込みエラー
Redis data types listによれば、リストの
最大長は2 です。
/*Creating the json list*/
Gson gson = new GsonBuilder().create();
List<String> employeeList = new ArrayList<String>();
for (int i = 1; i <= 2000000; i++) {
Employee employee = new Employee(i + "", "Jhon", "My Country", "[email protected]", "+777 92157325");
String json = gson.toJson(employee);
employeeList.add(json);
}
/*add json list to Redis*/
Jedis jedis = pool.getResource();
// employeeList size is = 2,000,000
String[] jsonArray = employeeList.toArray(new String[employeeList.size()]);
jedis.lpush("employee_list_1", jsonArray);
ログイン
Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketException: Connection reset by peer: socket write error
at redis.clients.jedis.Protocol.sendCommand(Protocol.java:83)
at redis.clients.jedis.Protocol.sendCommand(Protocol.java:63)
at redis.clients.jedis.Connection.sendCommand(Connection.java:84)
at redis.clients.jedis.BinaryClient.lpush(BinaryClient.java:281)
at redis.clients.jedis.Client.lpush(Client.java:205)
at redis.clients.jedis.Jedis.lpush(Jedis.java:869)
at com.mutu.redis.AddJosn.add(AddJosn.java:29)
at com.mutu.redis.AddJosn.main(AddJosn.java:48)
Caused by: java.net.SocketException: Connection reset by peer: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109)
at java.net.SocketOutputStream.write(SocketOutputStream.java:153)
at redis.clients.util.RedisOutputStream.flushBuffer(RedisOutputStream.java:31)
at redis.clients.util.RedisOutputStream.write(RedisOutputStream.java:54)
at redis.clients.util.RedisOutputStream.write(RedisOutputStream.java:44)
at redis.clients.jedis.Protocol.sendCommand(Protocol.java:79)
... 7 more
どのように単一のトランザクション/処理で2万件の以上のレコードを追加するには?
これは、レディスにプッシュされているオブジェクトのサイズによって生成される、より低レベルの問題のように見えます。それはjedisの実装に依存します。リスト内の小さなオブジェクトでテストできますか? – Pixou