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

Mengelola koneksi

String Koneksi Redis #

String Koneksi Redis telah diperluas untuk mendukung format URI yang lebih fleksibel yang sekarang dapat menangkap sebagian besar pengaturan Klien Redis dalam satu string koneksi (mirip dengan string Koneksi DB).

Redis Connection Strings mendukung beberapa format mirip URI, dari hostname yang sederhana atau Alamat IP dan port pasangkan ke URI . yang sepenuhnya memenuhi syarat dengan beberapa opsi yang ditentukan pada QueryString.

Beberapa contoh format yang didukung:

localhost
127.0.0.1:6379
redis://localhost:6379
password@localhost:6379
clientid:password@localhost:6379
redis://clientid:password@localhost:6380?ssl=true&db=1

INFORMASI

Contoh lainnya dapat dilihat di ConfigTests.cs

Konfigurasi tambahan apa pun dapat ditentukan sebagai parameter QueryString. Daftar lengkap opsi yang dapat ditentukan meliputi:

Ssl bohong Jika ini adalah koneksi SSL
Db int The Redis DB koneksi ini harus disetel ke
Klien string Alias ​​teks untuk menentukan koneksi ini untuk tujuan analitik
Sandi string Versi Kata Sandi yang disandikan dengan Url untuk koneksi ini
Waktu Habis Terhubung int Waktu habis dalam ms untuk membuat koneksi TCP Socket
Waktu Kirim Habis int Waktu habis dalam ms untuk membuat Pengiriman Soket TCP sinkron
Waktu Terima Habis int Waktu habis dalam ms untuk menunggu Penerimaan Socket TCP yang sinkron
IdleTimeOutSecs int Waktu habis dalam Detik agar koneksi Idle dianggap aktif
Awalan Namespace string Gunakan awalan khusus untuk kumpulan indeks internal ServiceStack.Redis

ServiceStack.Redis Dukungan SSL #

ServiceStack.Redis mendukung koneksi SSL membuatnya cocok untuk mengakses instance server Redis jarak jauh melalui koneksi SSL aman .

Tentukan Protokol SSL #

Dukungan untuk mengubah Protokol SSL yang digunakan untuk koneksi SSL terenkripsi dapat diatur pada string koneksi menggunakan sslprotocols pengubah, misalnya:

var connString = $"redis://{Host}?ssl=true&sslprotocols=Tls12&password={Password.UrlEncode()}";
var redisManager = new RedisManagerPool(connString);
using var client = redisManager.GetClient();
//...

Menghubungkan ke Azure Redis #

Karena menghubungkan ke Azure Redis Cache melalui SSL adalah kasus penggunaan utama untuk fitur ini, kami telah menambahkan cara baru untuk terhubung ke Azure Redis melalui SSL untuk membantu Anda memulai.

Redis GEO #

Rilis Redis 3.2.0 menghadirkan kemampuan GEO baru yang menarik yang memungkinkan Anda menyimpan koordinat Lintang/Bujur di Redis dan menanyakan lokasi dalam radius tertentu. Untuk mendemonstrasikan fungsi ini, kami telah membuat Demo Langsung Redis GEO baru yang memungkinkan Anda mengeklik di mana saja di AS untuk menemukan daftar kota terdekat dalam radius tertentu, Demo Langsung di:https://redis.netcore.io

Manajer Klien Redis #

Cara yang disarankan untuk mengakses RedisClient contoh adalah dengan menggunakan salah satu Manajer Klien Thread-Safe yang tersedia di bawah ini. Manajer Klien adalah pabrik koneksi yang harus didaftarkan sebagai Singleton baik di IOC atau kelas statis Anda.

RedisManagerPool #

Dengan String Koneksi URI Redis yang disempurnakan, kami dapat menyederhanakan dan merampingkan PooledRedisClientManager yang ada implementasi dan telah mengekstraknya menjadi manajer klien baru yang disebut RedisManagerPool .

Selain menghapus semua opsi di atas pada Manajer Klien itu sendiri, string koneksi readonly juga telah dihapus sehingga konfigurasi menjadi lebih sederhana dan lebih selaras dengan kasus penggunaan umum:

container.Register<IRedisClientsManager>(c => 
    new RedisManagerPool(redisConnectionString));

Perilaku Penggabungan

Koneksi apa pun yang diperlukan setelah ukuran Pool maksimum tercapai akan dibuat dan dibuang di luar Pool. Dengan tidak dibatasi pada ukuran kumpulan maksimum, perilaku pengumpulan di RedisManagerPool dapat mempertahankan ukuran kumpulan koneksi yang lebih kecil dengan kemungkinan memiliki jumlah koneksi terbuka/tertutup yang lebih tinggi.

PooledRedisClientManager #

Jika Anda lebih suka menentukan opsi pada Manajer Klien itu sendiri atau Anda ingin menyediakan server redis Baca/Tulis dan Hanya Baca (yaitu Master dan Replika), gunakan PooledRedisClientManager sebagai gantinya:

container.Register<IRedisClientsManager>(c => 
    new PooledRedisClientManager(redisReadWriteHosts, redisReadOnlyHosts) { 
        ConnectTimeout = 100,
        //...
    });

Perilaku Penggabungan

PooledRedisClientManager memberlakukan batas koneksi maksimum dan ketika ukuran kumpulan maksimumnya telah tercapai, sebaliknya akan memblokir permintaan koneksi baru hingga RedisClient berikutnya dilepaskan kembali ke kolam. Jika tidak ada klien yang tersedia dalam PoolTimeout , kumpulan TimeoutException akan dilempar.

Klien Hanya Baca #

Secara default menyelesaikan RedisClient dengan GetRedisClient() atau GetRedisClientAsync() akan mengembalikan klien yang terhubung ke host utama (master) yang dikonfigurasi, jika Anda juga memiliki host replika (slave) yang dikonfigurasi, Anda dapat mengaksesnya dengan GetReadOnlyClient() atau GetReadOnlyClientAsync() API, mis:

using var redisReadOnly = clientsManager.GetReadOnlyClient();

BasicRedisClientManager #

Jika tidak ingin menggunakan penggabungan koneksi (yaitu Anda mengakses instance redis-server lokal), Anda dapat menggunakan Manajer Klien dasar (non-pooled) yang membuat RedisClient baru contoh setiap kali:

container.Register<IRedisClientsManager>(c => 
    new BasicRedisClientManager(redisConnectionString));

Mengakses Klien Redis #

Setelah terdaftar, mengakses RedisClient sama di semua Manajer Klien, mis:

var clientsManager = container.Resolve<IRedisClientsManager>();
using var redis = clientsManager.GetClient();

redis.IncrementValue("counter");
List<string> days = redis.GetAllItemsFromList("days");

//Access Typed API
var redisTodos = redis.As<Todo>();

redisTodos.Store(new Todo {
    Id = redisTodos.GetNextSequence(),
    Content = "Learn Redis",
});

var todo = redisTodos.GetById(1);

//Access Native Client
var redisNative = (IRedisNativeClient)redis;

redisNative.Incr("counter");
List<string> days = redisNative.LRange("days", 0, -1);

Daftar lebih rinci dari RedisClient API yang tersedia yang digunakan dalam contoh dapat dilihat di antarmuka C# di bawah ini:

  • IRedisClientsManager
  • IRedisClient
  • IRedisNativeClient
  • Berlangganan IRedis

API Pipeline &Transaksi #

  • Transaksi IRedis
  • IRedisPipelineShared
  • IRedisQueueableOperation
  • IRedisQueueCompletableOperation

API Klien Umum #

  • IRedisTypedClient
  • IRedisHash
  • IRedisList
  • IRedisSet
  • IRedisSortedSet
  • IRedisTypedQueueableOperation

API Koleksi Server #

  • IRedisHash
  • IRedisList
  • IRedisSet
  • IRedisSortedSet

Async Redis #

Dukungan async di ServiceStack.Redis dirancang untuk efisiensi optimal dan menggunakan ValueTask &API Async modern lainnya hanya tersedia di .NET Standard 2.0 dan .NET Framework v4.7.2+ proyek di mana ada async API yang setara untuk sebagian besar API sinkronisasi seperti yang terdapat dalam antarmuka Async Redis di bawah ini:

  • IRedisClientsManagerAsync
  • IRedisClientAsync
  • IRedisNativeClientAsync
  • IRedisSubscriptionAsync

Async Pipeline &API Transaksi #

  • IRedisTransactionAsync
  • IRedisPipelineSharedAsync
  • IRedisQueueableOperationAsync
  • IRedisQueueCompletableOperationAsync

API Klien Generik Async #

  • IRedisTypedClientAsync
  • IRedisHashAsync
  • IRedisListAsync
  • IRedisSetAsync
  • IRedisSortedSetAsync
  • IRedisTypedTransactionAsync
  • IRedisTypedQueueableOperationAsync

API Koleksi Server Async #

  • IRedisHashAsync
  • IRedisListAsync
  • IRedisSetAsync
  • IRedisSortedSetAsync

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara menjalankan server Redis DAN aplikasi lain di dalam Docker?

  2. Bagaimana cara terhubung ke wadah Redis menggunakan Docker Compose?

  3. Masalah dengan Redis install cc:Perintah tidak ditemukan

  4. Spring Data Redis - ID UUID - ConverterNotFoundException

  5. Mengatur bidang dinamis dalam Ohm / Redis