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