cari
Rumahpangkalan dataRedisCara melaksanakan cache dan jualan kilat yang diedarkan Redis

1. Masalah dengan satu titik Redis

1.

2. Isu Concurrency

Kelompok tuan-hamba kami menyedari pemisahan membaca dan menulis.

3. Isu pemulihan kegagalan

Gunakan Redis Sentinel untuk melaksanakan pengesanan kesihatan dan pemulihan automatik.

4. Isu kapasiti storan

Bina gugusan berpecah dan gunakan mekanisme slot untuk mencapai pengembangan dinamik.

2. RDB

Nama penuh RDB ialah fail Sandaran Pangkalan Data Redis (fail sandaran data Redis), juga dipanggil petikan data Redis. Secara ringkasnya, semua data dalam memori direkodkan ke cakera. Apabila contoh Redis gagal dan dimulakan semula, fail syot kilat dibaca dari cakera dan data dipulihkan.

Fail syot kilat dipanggil fail RDB dan disimpan dalam direktori semasa yang sedang berjalan secara lalai.


Redis mempunyai mekanisme dalaman untuk mencetuskan RDB, yang boleh didapati dalam fail redis.conf Formatnya adalah seperti berikut:

Cara melaksanakan cache dan jualan kilat yang diedarkan RedisApabila bgsave. arahan dilaksanakan, garpu akan diluluskan Panggilan sistem mencipta proses anak yang berkongsi data memori dengan proses utama. Selepas melengkapkan garpu, baca data memori dan tuliskannya ke fail RDB.

fork menggunakan teknologi salin atas tulis:

    Apabila proses utama menjalankan operasi baca, memori dikongsi diakses; >
  • Apabila proses utama melakukan operasi tulis, ia akan menyalin salinan data dan melaksanakan operasi tulis;

  • Bantu proses utama untuk mendapatkan proses kanak-kanak dan berkongsi ruang memori

Proses kanak-kanak membaca data memori dan menulis yang baharu; Fail RDB;

  1. Ganti fail RDB lama dengan fail RDB baharu; dihukum bunuh? Apakah maksud simpan 60 1000?

  2. Lalai ialah apabila perkhidmatan dihentikan; 🎜>

  3. Kelemahan RDB?
  4. Selang pelaksanaan RDB adalah panjang, dan terdapat risiko kehilangan data antara dua penulisan RDB; , tulis Memakan masa untuk menjana fail RDB;

Cara melaksanakan cache dan jualan kilat yang diedarkan Redis

Kekerapan rakaman arahan AOF juga boleh dikonfigurasikan melalui fail redis.conf:

3
  • AOF bermaksud Append Only File. Setiap arahan tulis yang diproses oleh Redis akan direkodkan dalam fail AOF, yang boleh dianggap sebagai fail log arahan.

    AOF dimatikan secara lalai Anda perlu mengubah suai fail konfigurasi redis.conf untuk mendayakan AOF:
  • Kekerapan rakaman arahan AOF juga boleh. melalui Fail redis.conf untuk dipadankan:

  • Kerana ia adalah arahan rakaman, fail AOF akan lebih besar daripada fail RDB. Walaupun AOF akan merekodkan berbilang operasi tulis pada kekunci yang sama, hanya operasi tulis terakhir di antaranya yang bermakna. Anda boleh menggunakan perintah bgrewriteaof untuk melengkapkan fungsi penulisan semula fail AOF dengan bilangan arahan minimum.

    set id 1
    set name nezha
    set id 2
    
    bgrewriteaof
    
    mset name nezha id 2

    Redis juga akan menulis semula fail AOF secara automatik apabila ambang dicetuskan. Ambang juga boleh dikonfigurasikan dalam redis.conf:

    # Peratusan di mana fail AOF berkembang berbanding fail terakhir akan mencetuskan penulisan semula auto-aof-rewrite-percentage 100# Apakah minimum saiz fail AOF? Trigger tulis semula auto-aof-rewrite-min-size 64mb

    RDB dan AOF masing-masing mempunyai kelebihan dan kekurangannya sendiri Jika keperluan keselamatan data lebih tinggi, kedua-duanya selalunya digabungkan dalam pembangunan sebenar untuk digunakan.


    RDB AOF
    持久化方式 定时对整个内存做快照 记录每一次执行的命令
    数据完整性 不完整,两次备份之间会丢失 相对完整,取决于刷盘策略
    文件大小 会有压缩,文件体积小 记录命令,文件体积很大
    宕机恢复速度 很快
    数据恢复优先级 低,因为数据完整性不低 高,因为数据完整性更高
    系统资源占用 高,大量CPU和内存消耗 低,主要是磁盘IO资源,但AOF重写时会占用大量CPU和内存资源
    使用场景 可以容忍数分钟的数据丢失,追求更快的启动速度 对数据安全性要求较高常见

    4. Proses jualan kilat pengoptimuman Redis

    1 Langkah jualan kilat:

    1. Semak kupon

    2. Tentukan inventori produk jualan kilat;

    3. Semak pesanan

    4. Sahkan satu pesanan setiap orang;

    5. Kurangkan inventori;

    6. Buat pesanan; langkah jualan kilat:

    Tambahkan kupon jualan kilat dan simpan maklumat kupon ke Redis; inventori produk, satu setiap orang Pesan, tentukan sama ada jualan kilat pengguna berjaya Cara melaksanakan cache dan jualan kilat yang diedarkan Redis

    Jika jualan kilat berjaya, masukkan id kupon, id pengguna dan id produk ke dalam penyekatan; baris gilir;
    1. Dayakan tugas tak segerak, baca secara berterusan maklumat daripada baris gilir penyekat, dan realisasikan fungsi pesanan tak segerak; >
    2. 3. Skrip Lua untuk jualan kilat
    3. 4. Panggil skrip Lua untuk jualan kilat

      public Result seckillVoucher(Long voucherId) {
           Long userId = UserHolder.getUser().getId();
           long orderId = redisIdWorker.nextId("order");
           // 1.执行lua脚本
           Long result = stringRedisTemplate.execute(
                   SECKILL_SCRIPT,
                   Collections.emptyList(),
                   voucherId.toString(), userId.toString(), String.valueOf(orderId)
           );
           int r = result.intValue();
           // 2.判断结果是否为0
           if (r != 0) {
               // 2.1.不为0 ,代表没有购买资格
               return Result.fail(r == 1 ? "库存不足" : "不能重复下单");
           }
           // 3.返回订单id
           return Result.ok(orderId);
       }

      5 kumpulan benang
    4. // 线程池
      private static final ExecutorService SECKILL_ORDER_EXECUTOR = Executors.newSingleThreadExecutor();
      
      /**
      * 在类初始化完成后执行
      */
      @PostConstruct
      private void init() {
          SECKILL_ORDER_EXECUTOR.submit(new VoucherOrderHandler());
      }
      
      // 阻塞队列
      private BlockingQueue<VoucherOrder> orderTasks = new ArrayBlockingQueue<>(1024 * 1024);
      private class OrderHandler implements Runnable{
      
          @Override
          public void run() {
              while (true){
                  try {
                      doSomething();
                  } catch (Exception e) {
                      log.error("处理订单异常", e);
                  }
              }
          }
      }
    5. 5 Laksanakan sesi kongsi berdasarkan Log Masuk Redis

      Log masuk berdasarkan sesi

    Cara melaksanakan cache dan jualan kilat yang diedarkan Redis

    Sesi kongsi log masuk berdasarkan Redis

    rreeee

    Cara melaksanakan cache dan jualan kilat yang diedarkan Redis

Atas ialah kandungan terperinci Cara melaksanakan cache dan jualan kilat yang diedarkan Redis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Artikel ini dikembalikan pada:亿速云. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Redis: Bagaimana ia berfungsi sebagai kedai data dan perkhidmatanRedis: Bagaimana ia berfungsi sebagai kedai data dan perkhidmatanApr 24, 2025 am 12:08 AM

Redisactsasbothadatastoreandaservice.1) asadatastore, itusesin-memorystorageforfastoperations, supportingvariousdataStructuresLikey-valueepairsandsortedsets.2) asaservice, itprovidesfunctionalitiesticePub/subdressageSpleSclePing

Redis vs Pangkalan Data Lain: Analisis PerbandinganRedis vs Pangkalan Data Lain: Analisis PerbandinganApr 23, 2025 am 12:16 AM

Berbanding dengan pangkalan data lain, REDIS mempunyai kelebihan unik berikut: 1) kelajuan yang sangat cepat, dan membaca dan menulis operasi biasanya pada tahap microsecond; 2) menyokong struktur dan operasi data yang kaya; 3) Senario penggunaan fleksibel seperti cache, kaunter dan menerbitkan langganan. Apabila memilih REDI atau pangkalan data lain, ia bergantung kepada keperluan dan senario khusus. Redis berfungsi dengan baik dalam aplikasi berprestasi tinggi dan rendah latency.

Peranan Redis: Meneroka Keupayaan Penyimpanan Data dan PengurusanPeranan Redis: Meneroka Keupayaan Penyimpanan Data dan PengurusanApr 22, 2025 am 12:10 AM

Redis memainkan peranan penting dalam penyimpanan dan pengurusan data, dan telah menjadi teras aplikasi moden melalui pelbagai struktur data dan mekanisme kegigihannya. 1) REDIS menyokong struktur data seperti rentetan, senarai, koleksi, koleksi yang diperintahkan dan jadual hash, dan sesuai untuk logik perniagaan cache dan kompleks. 2) Melalui dua kaedah ketekunan, RDB dan AOF, Redis memastikan penyimpanan yang boleh dipercayai dan pemulihan data yang cepat.

Redis: Memahami Konsep NoSQLRedis: Memahami Konsep NoSQLApr 21, 2025 am 12:04 AM

Redis adalah pangkalan data NoSQL yang sesuai untuk penyimpanan dan akses data berskala besar. 1.Redis adalah sistem penyimpanan struktur data memori sumber terbuka yang menyokong pelbagai struktur data. 2. Ia menyediakan kelajuan membaca dan menulis yang sangat cepat, sesuai untuk caching, pengurusan sesi, dan lain -lain. 3.DIS menyokong kegigihan dan memastikan keselamatan data melalui RDB dan AOF. 4. Contoh penggunaan termasuk operasi pasangan nilai utama dan fungsi deduplikasi koleksi lanjutan. 5. Kesilapan umum termasuk masalah sambungan, jenis data yang tidak sepadan dan limpahan memori, jadi anda perlu memberi perhatian kepada debugging. 6. Cadangan Pengoptimuman Prestasi termasuk memilih struktur data yang sesuai dan menubuhkan strategi penghapusan memori.

Redis: Kes penggunaan dan contoh dunia sebenarRedis: Kes penggunaan dan contoh dunia sebenarApr 20, 2025 am 12:06 AM

Aplikasi REDIS di dunia nyata termasuk: 1. Kepelbagaian Redis dan prestasi tinggi menjadikannya bersinar dalam senario ini.

Redis: meneroka ciri dan fungsinyaRedis: meneroka ciri dan fungsinyaApr 19, 2025 am 12:04 AM

Redis menonjol kerana kelajuan tinggi, fleksibiliti dan struktur data yang kaya. 1) Redis menyokong struktur data seperti rentetan, senarai, koleksi, hash dan koleksi yang diperintahkan. 2) Ia menyimpan data melalui ingatan dan menyokong RDB dan AOF kegigihan. 3) Bermula dari Redis 6.0, operasi I/O multi-threaded telah diperkenalkan, yang telah meningkatkan prestasi dalam senario konvensional yang tinggi.

Adakah Redis Pangkalan Data SQL atau NoSQL? Jawapannya dijelaskanAdakah Redis Pangkalan Data SQL atau NoSQL? Jawapannya dijelaskanApr 18, 2025 am 12:11 AM

RedisIsclassifiedasanosqldatabaseBecauseItuseSey-valuedatamodelinsteadofthetraditionalrelationaldatabasemodel.itoffersspeedandflexibility, makeitidealforreal-timeapplicationsandcaching, ButitmaybesuitiSuScenariscenariscenari

Redis: Meningkatkan prestasi aplikasi dan skalabilitiRedis: Meningkatkan prestasi aplikasi dan skalabilitiApr 17, 2025 am 12:16 AM

Redis meningkatkan prestasi aplikasi dan skalabiliti dengan data caching, melaksanakan penguncian dan ketekunan data yang diedarkan. 1) Data cache: Gunakan REDIS ke cache data yang sering diakses untuk meningkatkan kelajuan akses data. 2) Kunci yang diedarkan: Gunakan Redis untuk melaksanakan kunci yang diedarkan untuk memastikan keselamatan operasi dalam persekitaran yang diedarkan. 3) Kegigihan data: Memastikan keselamatan data melalui mekanisme RDB dan AOF untuk mencegah kehilangan data.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.