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

Spring RedisConnectionFactory dengan transaksi tidak mengembalikan koneksi ke Pool dan kemudian memblokir saat habis

Saya pikir masalahnya adalah memanggil exec() tidak memberi tahu template bahwa Anda benar-benar selesai dengan koneksi sehingga tidak dapat dikembalikan ke kumpulan.

Menurut dokumen Anda seharusnya membungkus kode Anda dalam SessionCallback dan jalankan dengan RedisTemplate.execute(SessionCallback<T> callback) yang akan mengembalikan koneksi ke kumpulan setelah panggilan balik Anda dijalankan.

Seperti ini:

template.execute(new SessionCallback<List<Object>>() {
    public List<Object> execute(RedisOperations operations) throws DataAccessException {
        operations.multi();
        aMap.put(A_KEY, a.toString(), a);
        bMap.put(B_KEY, b.toString(), b);
        cMap.put(C_KEY, c.toString(), c);
        return operations.exec();
    }
});

Spring Data Redis juga memiliki dukungan untuk @Transactional yang akan mengikat/melepaskan koneksi secara otomatis untuk Anda, tetapi mengharuskan Anda untuk menerapkan metode dalam kacang yang dapat dicegat (yaitu tidak bisa final ) dan transaksi hanya akan dimulai jika dieksekusi dari luar bean (yaitu bukan dari metode lain di kelas yang sama atau kelas sub-/induk).

Anda telah mengaktifkan dukungan transaksi pada template dengan redisTemplate.setEnableTransactionSupport(true); jadi Anda harus baik-baik saja:

@Transactional
public void put(A a, B b, C c) {
    aMap.put(A_KEY, a.toString(), a);
    bMap.put(B_KEY, b.toString(), b);
    cMap.put(C_KEY, c.toString(), c);
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Redis wildcard menghapus skrip menggunakan EVAL, SCAN, dan DEL mengembalikan perintah Tulis tidak diizinkan setelah perintah non-deterministik

  2. Bagaimana cara mengimplementasikan server push dalam kerangka Flask?

  3. Bagaimana socket.io mengirim pesan ke beberapa server?

  4. Node.js, Socket.io, Redis pub/sub volume tinggi, kesulitan latensi rendah

  5. Apakah Azure mendukung hal-hal seperti mongodb dan redis?