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

Bagaimana melakukan MENONTON dasar dengan StackExchange.Redis

Alasan WATCH tidak diekspos secara langsung adalah karena bagaimana SE.Redis dirancang untuk menggandakan perintah dari tumpukan panggilan yang berbeda pada satu koneksi. Hal ini membuat pekerjaan transaksi apa pun harus sangat dikelola dengan ketat.

Saya tidak jelas apa tujuan dari "tidak berubah" dengan sendirinya , tanpa membandingkan dengan beberapa nilai yang diketahui - jika tidak, Anda hanya membuat kondisi balapan. Sangat mungkin untuk menambahkan dukungan untuk itu, tetapi saya benar-benar ingin memahami kasus penggunaan yang diharapkan terlebih dahulu. Bisa dijelaskan?

Re edit Anda; contoh pilihan Anda (yang terakhir) tidak mungkin dengan redis - tidak ada hubungannya dengan SE.Redis; jika Anda melakukan GET di dalam MULTI , Anda tidak mendapatkan jawabannya sampai EXEC selesai - jadi Anda tidak mungkin menggunakan nilai dalam SET :belum tersedia .

Jika bukan karena multiplexing, Anda dapat mengurutkan ulang contoh kedua Anda (berdasarkan apa yang dilakukan SE.Redis) sedikit:

WATCH key
val = GET key
MULTI
val = val + 1
SET key $val
EXEC

ini adalah khas penggunaan WATCH :kamu menonton hal-hal yang Anda tanyakan sebelumnya, maka Anda tahu bahwa {key} tidak berubah selama loop ini (atau setidaknya, transaksi akan dibatalkan; tidak ada status yang tidak konsisten). Namun, WATCH tidak cocok dengan multiplexer , itulah sebabnya SE.Redis memaksa Anda menyusuri rute pengambilan nilai sebelum transaksi , lalu memungkinkan Anda membandingkan nilai untuk menegaskan bahwa itu tidak berubah. Hasil yang sama; pendekatan yang sedikit berbeda, tetapi multiplexer-safe. Untuk informasi lebih lanjut tentang topik itu, lihat di sini.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara menggunakan redis PUBLISH/SUBSCRIBE dengan nodejs untuk memberi tahu klien ketika nilai data berubah?

  2. Ide untuk menskalakan obrolan di AWS?

  3. API LUA RedisClient

  4. Predis dengan laravel 5.5 Tidak ada koneksi yang tersedia di kumpulan di Aggregate/RedisCluster.php:337

  5. Ingin mengimplementasikan soket web di Laravel