Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

Batalkan Pekerjaan Di Laravel

Tidak ada cara langsung atau mudah untuk melakukannya. Pekerjaan yang tertunda disimpan dalam sorted sets sebagai waktu yang akan diproses sebagai score dan muatan pekerjaan sebagai value .

Ada beberapa cara untuk menghapus elemen dari kumpulan yang diurutkan (kebanyakan memerlukan beberapa upaya tergantung pada ukuran antrian yang tertunda) seperti

  • Anda mendapatkan muatan "tepat" dari pekerjaan yang dikirim dan kemudian menggunakan ZREM untuk menghapusnya. Sulit karena objek (versi serial pekerjaan dengan semua parameter) bisa sangat besar dan Anda tidak dapat membuat pekerjaan "tepat" karena memiliki pengidentifikasi unik. Anda bisa mendapatkan daftarnya dengan ZRANGEBYSCORE dan dengan WITHSCORES . Ini akan memberi Anda daftar pekerjaan dengan skor mereka. Anda dapat menggunakan skor untuk mengidentifikasi pekerjaan yang tertunda. Dapatkan nilainya (payload serial) lalu gunakan ZREM .
  • Jika hanya ada satu pekerjaan yang akan diproses pada waktu tertentu Anda, dapat menggunakan ZREMRANGEBYSCORE dengan menggunakan waktu yang diproses. Jika ada n pekerjaan yang harus diproses tepat pada waktu itu, maka pekerjaan lain juga dapat dihapus karena ZREMRANGEBYSCORE membutuhkan interval waktu.
  • Anda dapat mencoba menggunakan ZSCAN untuk memindai seluruh daftar tertunda (dengan pagination) dan menemukan skor dan pengenal pekerjaan, lalu menggunakan ZREMRANGEBYLEX dengan pengenal untuk menghapusnya.
  • Cara lain dapat menempatkan kondisi pembatalan di awal handle metode. Yang ini membutuhkan pengembangan lapisan aplikasi. Setiap kali Anda memasukkan pekerjaan ke antrian, Anda mengirim pengidentifikasi ke pekerjaan itu, masukkan pengenal yang sama (yang dapat Anda pahami) di Redis juga (dengan EXPIRE lebih besar dari waktu tunda). Ketika Anda ingin membatalkannya, maka hapus dari Redis. Di dalam metode pegangan, periksa apakah pengidentifikasi yang diberikan ada di Redis, jika tidak, kembalikan lebih awal dari blok kode.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara terhubung ke instance cluster Docker Redis menggunakan jedis untuk Java?

  2. Kesalahan Perintah Pengelompokan Perusahaan Redis 'CLUSTER'

  3. Redis sub/pub dan php/nodejs

  4. ScaleGrid Hosting Terkelola Sepenuhnya untuk Redis™ Sekarang Tersedia di Azure

  5. Laravel 5.1 Session and Socket.IO + Redis - Mengirim Pemberitahuan ke Pengguna yang Masuk (Dikenal) dan Grup Pengguna