Rumah  >  Artikel  >  pangkalan data  >  Cara menggunakan jenis data HyperLogLog dalam Redis

Cara menggunakan jenis data HyperLogLog dalam Redis

PHPz
PHPzke hadapan
2023-05-29 09:29:12964semak imbas

1. Prinsip HyperLogLog

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.

2. Langkah penggunaan:

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.

3. Contoh penggunaan paparan halaman untuk melaksanakan permintaan penyahduplikasian IP

Cara menggunakan jenis data HyperLogLog dalam Redis

4. kebergantungan:

<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");
PFMERGE5 Redission menggunakan kebergantungan

 1. Cipta objek RedissonClient

rreee

 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

LogLog

LogLog

Ciri:

    mempunyai ketepatan yang rendah, tetapi menggunakan memori yang sangat sedikit.
  • menyokong memasukkan elemen baharu tanpa mengira dua kali.
  • Menyediakan arahan untuk mengoptimumkan penggunaan memori dan ketepatan mengira. Contohnya, PFADD, PFCOUNT, PFMERGE dan arahan lain.
  • boleh menganggarkan bilangan elemen berbeza dalam set data, iaitu kekardinalitian set.
  • Menyokong operasi penggabungan pada berbilang objek HyperLogLog untuk mendapatkan anggaran jumlah kardinaliti koleksi ini.
  • Kaedah yang biasa digunakan dalam HyperLogLog:

    Unsur kunci PFADD [elemen ...]: Tambahkan satu atau lebih elemen pada struktur HyperLogLog.
  • Kunci PFCOUNT [kunci ...]: Dapatkan anggaran kardinaliti satu atau lebih struktur HyperLogLog.
  • Kunci sumber destkey PFMERGE [kunci sumber ...]: Gabungkan satu atau lebih struktur HyperLogLog ke dalam struktur sasaran.
  • PFSELFTEST [numtests]: Uji prestasi dan ketepatan anggaran HyperLogLog (hanya untuk versi Redis4.0+)
  • Perlu diingat bahawa , walaupun HyperLogLog boleh menjimatkan banyak memori, ia masih merupakan algoritma anggaran, julat ralat tidak tepat sepenuhnya, dan ia mempunyai kos pengiraan tertentu. Bergantung pada aplikasi sebenar, anda perlu mempertimbangkan sama ada untuk menggunakan HyperLogLog atau struktur data lain untuk menganggarkan bilangan elemen.

7. Ringkasan senario penggunaan:

Fungsi utama Redis menggunakan HyperLogLog adalah untuk melakukan pengiraan deduplikasi dalam kes aliran data yang besar (pandangan, IP, bandar).

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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam