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
es和redis区别es和redis区别Jul 06, 2019 pm 01:45 PM

Redis是现在最热门的key-value数据库,Redis的最大特点是key-value存储所带来的简单和高性能;相较于MongoDB和Redis,晚一年发布的ES可能知名度要低一些,ES的特点是搜索,ES是围绕搜索设计的。

一起来聊聊Redis有什么优势和特点一起来聊聊Redis有什么优势和特点May 16, 2022 pm 06:04 PM

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于redis的一些优势和特点,Redis 是一个开源的使用ANSI C语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式存储数据库,下面一起来看一下,希望对大家有帮助。

实例详解Redis Cluster集群收缩主从节点实例详解Redis Cluster集群收缩主从节点Apr 21, 2022 pm 06:23 PM

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis Cluster集群收缩主从节点的相关问题,包括了Cluster集群收缩概念、将6390主节点从集群中收缩、验证数据迁移过程是否导致数据异常等,希望对大家有帮助。

Redis实现排行榜及相同积分按时间排序功能的实现Redis实现排行榜及相同积分按时间排序功能的实现Aug 22, 2022 pm 05:51 PM

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis实现排行榜及相同积分按时间排序,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,希望对大家有帮助。

详细解析Redis中命令的原子性详细解析Redis中命令的原子性Jun 01, 2022 am 11:58 AM

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于原子操作中命令原子性的相关问题,包括了处理并发的方案、编程模型、多IO线程以及单命令的相关内容,下面一起看一下,希望对大家有帮助。

一文搞懂redis的bitmap一文搞懂redis的bitmapApr 27, 2022 pm 07:48 PM

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了bitmap问题,Redis 为我们提供了位图这一数据结构,位图数据结构其实并不是一个全新的玩意,我们可以简单的认为就是个数组,只是里面的内容只能为0或1而已,希望对大家有帮助。

实例详解Redis实现排行榜及相同积分按时间排序功能的实现实例详解Redis实现排行榜及相同积分按时间排序功能的实现Aug 26, 2022 pm 02:09 PM

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis实现排行榜及相同积分按时间排序,本文通过实例代码给大家介绍的非常详细,下面一起来看一下,希望对大家有帮助。

一起聊聊Redis实现秒杀的问题一起聊聊Redis实现秒杀的问题May 27, 2022 am 11:40 AM

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于实现秒杀的相关内容,包括了秒杀逻辑、存在的链接超时、超卖和库存遗留的问题,下面一起来看一下,希望对大家有帮助。

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

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

PhpStorm versi Mac

PhpStorm versi Mac

Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

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.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa