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

Ruby - Mutex berbasis redis dengan implementasi kedaluwarsa

Jika Anda menggunakan Redis 2.6+, Anda dapat melakukannya dengan lebih sederhana dengan mesin skrip Lua. Dokumentasi Redis mengatakan:

Skrip Redis adalah transaksional menurut definisinya, jadi semua yang dapat Anda lakukan dengan transaksi Redis, Anda juga dapat melakukannya dengan skrip, dan biasanya skrip akan lebih sederhana dan lebih cepat.

Menerapkannya sepele:

LUA_ACQUIRE = "return redis.call('setnx', KEYS[1], 1) == 1 and redis.call('expire', KEYS[1], KEYS[2]) and 1 or 0"
def lock(key, timeout = 3600)
  if redis.eval(LUA_ACQUIRE, key, timeout) == 1
    begin
      yield
    ensure
      r.del key
    end
  end
end

Penggunaan:

lock("somejob") { do_exclusive_job }


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mac(os x):Apakah ada cara untuk menginstal HANYA redis-cli?

  2. Bagaimana cara menghapus Heroku Redis?

  3. Mengunci dan Redis

  4. Beberapa kunci yang menunjuk ke nilai tunggal di Redis (Cache) dengan java

  5. Sesi Bersama antara Aplikasi Node?