StackExchange.Redis API İle Redis Kullanımı
Kütüphane Entegrasyonu ve Servis İnşası
İlk olarak Asp.NET Core uygulamanıza StackExchange.Redis kütüphanesini entegre ediniz. Ardından bu kütüphaneyi kullanarak aşağıdakine benzer bir servis oluşturunuz.
1 2 3 4 5 6 7 8 9 | using StackExchange.Redis; public class RedisService { ConnectionMultiplexer connectionMultiplexer; public void Connect() => connectionMultiplexer = ConnectionMultiplexer.Connect("localhost:1453"); public IDatabase GetDb(int db) => connectionMultiplexer.GetDatabase(db); } |
Burada ‘Connect’ metodu içerisinde ‘ConnectionMultiplexer’ sınıfıyla ilgili Redis sunucusuna bağlantı gerçekleştirilmekte ve ardından ‘GetDb’ metodu ile de bağlantı gerçekleştirilmiş ilgili sınıf üzerinden Redis sunucusundaki veritabanları çağrılarak elde edilmektedir.
Bizler bu servisi kullanabilmek için dependency injection provider’ına singleton olarak ekleyip tekbir nesne olarak yönetebiliriz. Şöyle ki; uygulamanın ‘Startup.cs’ dosyasında
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | public class Startup { public void ConfigureServices(IServiceCollection services) { . . . services.AddSingleton<RedisService, RedisService>(); . . . } public void Configure(IApplicationBuilder app, IWebHostEnvironment env, RedisService redisService) { . . . redisService.Connect(); . . . } } |
şeklinde bir çalışma yapmamız yeterli olacaktır. Yapıya dikkat ederseniz uygulamada 8. satırda provider’a singleton olarak dahil edilen ‘RedisService’ nesnesi, 14. satırda dependency injection’dan talep edilmekte ve 19. satırda da ‘Connect’ fonksiyonu tetiklenerek Redis sunucusuyla hali hazırda bağlantısı kurulmuş vaziyete getirilmektedir. Nihayetinde ilgili servisin nesnesi singleton olacağı için bundan sonraki ilgili nesneye dair yapılacak tüm taleplerde bağlantısı gerçekleştirilmiş bu nesne gönderilecektir.
StackExchange.Redis Kullanımı
Oluşturulan servisi dependency injection ile aşağıdaki gibi talep ettikten sonra Redis türlerinden örneklendirmelere geçebiliriz.
1 2 3 4 5 6 7 8 9 10 | public class RedisController : Controller { RedisService _redisService; public RedisController(RedisService redisService) { _redisService = redisService; } } |
Redis String
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | IDatabase database = _redisService.GetDb(1); //SET database.StringSet("name", "gencay"); //GET string value_get = database.StringGet("name"); Console.WriteLine($"Get : {value_get}"); //APPEND database.StringAppend("name", " yıldız"); string value_append = database.StringGet("name"); Console.WriteLine($"Append : {value_append}"); //INCR database.StringSet("count", 1); long value_count = database.StringIncrement("count"); Console.WriteLine($"Incr : {value_count}"); //GETRANGE string value_getrange = database.StringGetRange("name", 1, 2); Console.WriteLine($"Getrange : {value_getrange}"); |
Redis List
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | IDatabase database = _redisService.GetDb(1); //LPUSH database.ListLeftPush("ogrenciler", "furkan"); database.ListLeftPush("ogrenciler", "hakan"); database.ListLeftPush("ogrenciler", "berrak"); //RPUSH database.ListRightPush("ogrenciler", "emine"); database.ListRightPush("ogrenciler", "kevser"); database.ListRightPush("ogrenciler", "murat"); //LRANGE RedisValue[] values = database.ListRange("ogrenciler", 0, -1); int count = 1; values.ToList().ForEach(o => Console.WriteLine($"öğrenci {count++} - {o}")); //LPOP string left_pop = database.ListLeftPop("ogrenciler"); Console.WriteLine($"LPOP : {left_pop}"); //RPOP string right_pop = database.ListRightPop("ogrenciler"); Console.WriteLine($"RPOP : {right_pop}"); //LINDEX string index_value = database.ListGetByIndex("ogrenciler", 2); Console.WriteLine($"LINDEX : {index_value}"); |
Redis Set
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | IDatabase database = _redisService.GetDb(1); //SADD database.SetAdd("color", "blue"); database.SetAdd("color", "red"); database.SetAdd("color", "white"); database.SetAdd("color", "black"); //SETMEMBERS RedisValue[] values = database.SetMembers("color"); values.ToList().ForEach(c => Console.WriteLine(c)); //SREM database.SetRemove("color", "white"); Console.WriteLine("****"); values = database.SetMembers("color"); values.ToList().ForEach(c => Console.WriteLine(c)); |
Redis Sorted Set
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | IDatabase database = _redisService.GetDb(1); //ZADD database.SortedSetAdd("esya", "kalem", 5); database.SortedSetAdd("esya", "silgi", 10); database.SortedSetAdd("esya", "defter", 15); database.SortedSetAdd("esya", "kağıt", 2); //ZRANGE RedisValue[] values = database.SortedSetRangeByRank("esya", 0, -1); values.ToList().ForEach(e => Console.WriteLine(e)); //ZRANGE - WITHSCORES SortedSetEntry[] values2 = database.SortedSetRangeByRankWithScores("esya", 0, -1); Console.WriteLine("****"); values2.ToList().ForEach(e => Console.WriteLine(e)); //ZREM database.SortedSetRemove("esya", "kalem"); Console.WriteLine("****"); values = database.SortedSetRangeByRank("esya", 0, -1); values.ToList().ForEach(e => Console.WriteLine(e)); |
Redis Hash
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | IDatabase database = _redisService.GetDb(1); //HMSET database.HashSet("sozluk", "pen", "kalem"); database.HashSet("sozluk", "mouse", "fare"); database.HashSet("sozluk", "dog", "köpek"); database.HashSet("sozluk", "cat", "kedi"); //HMGET string value_cat = database.HashGet("sozluk", "cat"); Console.WriteLine(value_cat); //HDEL database.HashDelete("sozluk", "mouse"); //HGETALL HashEntry[] values = database.HashGetAll("sozluk"); values.ToList().ForEach(h => Console.WriteLine(h)); |









Yorum Yap