Rumah >pangkalan data >Redis >Bagaimana untuk menyelesaikan masalah yang akan disekat oleh arahan Redis bigkeys
Satu arahan mengakibatkan kerugian berjuta-juta. Adakah ini memerlukan pampasan?
Kod ini tidak diseragamkan dan rakan sekerja saya menangis.
Sebab ingin tahu, biar saya mengujinya.
untuk menulis 10 juta data.
for((i=1;i<=10000000;i++)); do echo "set k$i 哪吒编程$i" >> /tmp/test1.txt;done;
Semak sama ada penulisan berjaya melalui /tmp/test1.txt
.
cat /tmp/test1.txt | redis-cli -a 111111 --pipe
rename- command keys "" rename- command flushdb "" rename- command flushall ""3. Gunakan imbas dan bukannya kekunci *Arahan Redis Scan digunakan untuk mengulangi kekunci pangkalan data dalam pangkalan data. Perintah SCAN ialah iterator berasaskan kursor Setiap kali ia dipanggil, kursor baharu akan dikembalikan kepada pengguna Pengguna perlu menggunakan kursor baharu ini sebagai parameter kursor bagi perintah SCAN lelaran seterusnya. Dengan cara ini untuk meneruskan proses lelaran sebelumnya. SCAN mengembalikan tatasusunan yang mengandungi dua elemen Elemen pertama ialah kursor baharu untuk lelaran seterusnya, dan elemen kedua ialah tatasusunan yang mengandungi semua elemen lelaran. Jika kursor baharu mengembalikan 0 ia menunjukkan bahawa lelaran telah tamat. sintaks imbasan:
SCAN cursor [MATCH pattern] [COUNT count]
. “拒绝bigkey(防止网卡流量、慢查询)”
public void delBigHash(String host, int port, String password, String bigHashKey) { Jedis jedis = new Jedis(host, port); if (password != null && !"".equals(password)) { jedis.auth(password); } ScanParams scanParams = new ScanParams().count(100); String cursor = "0"; do { ScanResult<Entry<String, String>> scanResult = jedis.hscan(bigHashKey, cursor, scanParams); List<Entry<String, String>> entryList = scanResult.getResult(); if (entryList != null && !entryList.isEmpty()) { for (Entry<String, String> entry : entryList) { jedis.hdel(bigHashKey, entry.getKey()); } } cursor = scanResult.getStringCursor(); } while (!"0".equals(cursor)); //删除 bigkey jedis.del(bigHashKey); }3. Apakah masalah yang akan ditimbulkan oleh bigkey?
redis-cli --bigkeys
mengikut kekunci penggunaan memori
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah yang akan disekat oleh arahan Redis bigkeys. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!