Redis HyperLogLog menggunakan algoritma kebarangkalian, algoritma HyperLogLog, untuk menganggarkan kardinaliti. Menggunakan set fungsi cincang dan susunan sedikit panjang m, HyperLogLog dapat menganggarkan bilangan elemen unik dalam satu set.
Dalam algoritma HyperLogLog, setiap elemen dicincang dan selepas menukar nilai cincang ke perduaan, setiap elemen dijaringkan mengikut nombor 1 dalam awalan rentetan perduaan. Sebagai contoh, jika nilai cincang sesuatu elemen ialah 01110100011, maka bilangan 1 dalam awalan ialah 3, jadi dalam algoritma HyperLogLog, skor elemen ini ialah 3.
Apabila markah semua elemen dikira, ambil salingan setiap skor (1 / 2^n), kemudian tambah salingan ini dan ambil salingan, anda akan mendapat anggaran kardinaliti, nilai ini ialah HyperLogLog The keputusan anggaran algoritma.
Algoritma HyperLogLog menukar saiz panjang m tatasusunan bit, menjejaskan memori yang diduduki oleh struktur data dan ketepatan nilai anggaran (iaitu, ralat anggaran), dan memperoleh hasil yang antara ruang yang diduduki oleh data dan tahap ralat yang lebih kecil.
Ringkasnya, idea teras algoritma HyperLogLog adalah berdasarkan fungsi cincang dan operasi bit, dengan menukar nilai cincang kepada aliran bit dan mengira bilangan 0 pendahuluan, dengan itu menganggarkan nilai unik dengan cepat dalam kuantiti set data yang besar. Menggunakan algoritma hyperloglog, kami dapat mengenal pasti halaman web pendua dengan cepat dalam set data yang sangat besar.
Redis HyperLogLog ialah struktur data yang boleh digunakan untuk menganggarkan bilangan elemen dalam koleksi Ia boleh mengekalkan jumlah data yang besar dengan menggunakan memori yang sangat sedikit. Ia lebih tepat daripada algoritma anggaran konvensional dan sangat pantas apabila memproses sejumlah besar data.
Contoh mudah, kita boleh menggunakan HyperLogLog untuk mengira bilangan IP bebas yang melawati tapak web Secara khusus, anda boleh mengikuti langkah berikut:
Mula-mula buat HyperLogLog. struktur data: PFADD hll:unique_ips 127.0.0.1
Tambahkan pada struktur data unique_ips untuk setiap ip akses: PFADD hll:unique_ips 192.168.1.1
Dapatkan anggaran nombor elemen dalam set yang dikira : PFCOUNT hll:unique_ips
Anda boleh mendapatkan kiraan yang lebih tepat dengan menggabungkan berbilang struktur HyperLogLog (seperti mengikut hari atau jam).
Perlu diingat bahawa walaupun HyperLogLog boleh menjimatkan banyak memori, ia adalah algoritma anggaran dan julat ralat tidak tepat sepenuhnya Anda harus memberi perhatian kepada skop penggunaannya apabila menggunakannya dalam amalan.
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.6.0</version> </dependency>
2. Cipta objek Jedis:
Jedis jedis = new Jedis("localhost");
3. Tambah elemen pada struktur data HyperLogLog:
jedis.pfadd("hll:unique_ips", "127.0.0.1");
4. Dapatkan bilangan elemen dalam koleksi Nilai anggaran:
Long count = jedis.pfcount("hll:unique_ips"); System.out.println(count);
5. Kiraan yang lebih tepat boleh diperoleh dengan menggabungkan berbilang struktur HyperLogLog. Anda boleh menggunakan perintah
dalam Jedis untuk menggabungkan struktur data HyperLogLog:jedis.pfmerge("hll:unique_ips", "hll:unique_ips1", "hll:unique_ips2", "hll:unique_ips3");
PFMERGE
5 Redission menggunakan kebergantungan 2. Cipta objek RHyperLogLog
Config config = new Config(); config.useSingleServer().setAddress("redis://localhost:6379"); RedissonClient redisson = Redisson.create(config);
3. Tambah elemen
RHyperLogLog<String> uniqueIps = redisson.getHyperLogLog("hll:unique_ips");
4. Dapatkan anggaran kuantiti
uniqueIps.add("127.0.0.1");
5. Cantumkan berbilang objek HyperLogLog
LogLogLogLog
7. Ringkasan senario penggunaan:
Secara khusus, berikut ialah beberapa senario di mana Redis HyperLogLog digunakan untuk penyahduplikasian dan pengiraan:
Kira Paparan Halaman - Dalam aplikasi web, HyperLogLog boleh digunakan untuk mengira bilangan pelawat unik untuk setiap halaman. Gunakan teknologi HyperLogLog untuk mengira purata bilangan lawatan ke halaman ini merentas tempoh masa yang berbeza.
HyperLogLog mempunyai utiliti penting dalam menganalisis bilangan pengguna dalam pengumpulan data besar. Struktur data berasaskan kebarangkalian amat berkesan apabila berurusan dengan set data seperti ID pengguna unik. HyperLogLog hanya menyimpan bilangan nilai cincang yang terhad selepas pencincangan dan dapat menyimpulkan saiz set data.
Kira klik pengiklanan - Untuk analisis pengiklanan pada tapak web atau aplikasi, HyperLogLog boleh digunakan untuk menangkap bilangan klik berkesan, iaitu bilangan klik bukan pendua atau unik.
Atas ialah kandungan terperinci Cara menggunakan jenis data HyperLogLog dalam Redis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!