Rumah  >  Artikel  >  pangkalan data  >  Melaksanakan kaunter teragih menggunakan Redis dan Java: Bagaimana untuk mencapai konkurensi tinggi

Melaksanakan kaunter teragih menggunakan Redis dan Java: Bagaimana untuk mencapai konkurensi tinggi

王林
王林asal
2023-07-29 08:21:192456semak imbas

Melaksanakan kaunter teragih menggunakan Redis dan Java: Bagaimana untuk mencapai keselarasan tinggi

Pengenalan:
Dalam pembangunan aplikasi Internet moden, keselarasan tinggi adalah cabaran biasa. Apabila berbilang pengguna mengakses aplikasi pada masa yang sama, ia perlu dapat mengendalikan dan menjejaki permintaan setiap pengguna dengan betul untuk mengelakkan kehilangan data atau kekeliruan. Dalam artikel ini, kami akan membincangkan cara melaksanakan kaunter teragih menggunakan Redis dan Java untuk mencapai penjejakan dan pengurusan data konkurensi tinggi.

1. Pengenalan kepada Redis
Redis ialah sistem storan data berasaskan memori sumber terbuka. Ia menyediakan set struktur data yang kaya dan perintah operasi untuk menyimpan dan memproses sejumlah besar data dengan cekap. Prestasi pantas Redis dan kebolehpercayaan yang tinggi menjadikannya ideal untuk membina aplikasi teragih berprestasi tinggi.

2. Keperluan untuk kaunter yang diedarkan
Dalam banyak aplikasi, kita perlu mengira data tertentu, seperti lawatan laman web, suka pengguna, dll. Apabila aplikasi menghadapi konkurensi tinggi, kaunter bersendirian tradisional mungkin tidak dapat mengendalikannya Dalam kes ini, kaunter teragih diperlukan untuk menyelesaikan masalah ini.

3. Idea pelaksanaan kaunter teragih
Kami boleh menggunakan perintah incr Redis dan klien Redis Java untuk melaksanakan kaunter teragih. Idea asas adalah untuk menyimpan nilai setiap pembilang dalam kunci dalam Redis, dan kemudian gunakan perintah incr Redis untuk menambah pembilang.

4. Pelaksanaan Kod
Kami menggunakan Jedis sebagai pelanggan untuk mengendalikan Redis di Jawa. Pertama, kita perlu menambah Jedis pada kebergantungan projek Sebagai contoh, projek menggunakan Maven boleh menambah kebergantungan berikut:

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.7.0</version>
</dependency>

Seterusnya, kita boleh menulis kelas Java yang mudah untuk melaksanakan fungsi pembilang yang diedarkan:

import redis.clients.jedis.Jedis;

public class DistributedCounter {
    private static final String REDIS_HOST = "localhost";
    private static final int REDIS_PORT = 6379;
    private static final String COUNTER_KEY = "counter";

    public static void increment() {
        try (Jedis jedis = new Jedis(REDIS_HOST, REDIS_PORT)) {
            jedis.incr(COUNTER_KEY);
        }
    }

    public static long getCount() {
        try (Jedis jedis = new Jedis(REDIS_HOST, REDIS_PORT)) {
            return Long.parseLong(jedis.get(COUNTER_KEY));
        }
    }
}

Penjelasan kod :

  1. Kami mula-mula menentukan nama hos dan nombor port Redis, serta nama kunci untuk menyimpan nilai kaunter. Kaedah
  2. increment() menggunakan arahan Jedis incr untuk menambah nilai pembilang.
  3. Kaedah getCount() menggunakan arahan Jedis get untuk mendapatkan nilai semasa kaunter.

5. Contoh Penggunaan
Kini kita boleh menggunakan kelas DistributedCounter di tempat lain untuk melaksanakan kaunter teragih. Katakan kami mempunyai aplikasi web dan kami mahu dapat mengira bilangan lawatan dalam masa nyata setiap kali pengguna meminta URL tertentu.

public class Main {
    public static void main(String[] args) {
        // 用户每次访问该URL时,调用increment()方法增加计数器的值
        DistributedCounter.increment();
        
        // 在需要的时候调用getCount()方法获取计数器的当前值
        long count = DistributedCounter.getCount();
        
        System.out.println("访问次数:" + count);
    }
}

6. Ringkasan
Dengan menggunakan Redis dan Java, kita boleh melaksanakan kaunter teragih yang sangat serentak. Kaunter jenis ini boleh digunakan untuk mengira data seperti bilangan lawatan dan suka, dan boleh mengendalikan sejumlah besar permintaan pengguna serentak. Perlu diingat bahawa ketepatan dan prestasi kaunter yang diedarkan bergantung pada ketersediaan dan prestasi Redis, jadi kami perlu mengkonfigurasi dan mengurus pelayan Redis dengan betul untuk prestasi dan kebolehpercayaan yang optimum.

Atas ialah kandungan terperinci Melaksanakan kaunter teragih menggunakan Redis dan Java: Bagaimana untuk mencapai konkurensi tinggi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn