加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用WeihanLi.Redis操作Redis

发布时间:2020-12-16 01:14:27 所属栏目:百科 来源:网络整理
导读:WeihanLi.Redis Intro StackExchange.Redis 扩展,更简单的泛型操作,并提供一些的适用于业务场景中的扩展 基于 Redis 的五种数据类型扩展出了一些应用: String Cache Counter Firewall RedLock Hash Hash Dictonary List List Set Set SortedSet SortedSet

WeihanLi.Redis

Intro

StackExchange.Redis 扩展,更简单的泛型操作,并提供一些的适用于业务场景中的扩展

基于 Redis 的五种数据类型扩展出了一些应用:

  1. String

    • Cache
    • Counter
    • Firewall
    • RedLock
  2. Hash

    • Hash
    • Dictonary
  3. List

    • List
  4. Set

    • Set
  5. SortedSet

    • SortedSet
    • Rank

GetStarted

Install

Install from Nuget

Configuration 配置

RedisManager.AddRedisConfig(config =>
    {
        config.CachePrefix = "WeihanLi.Redis.UnitTest";
        config.ChannelPrefix = "WeihanLi.Redis.UnitTest";
    });

.net core 应用,还可以这样配置

serviceCollection.AddRedisConfig(config =>
    {
        config.CachePrefix = "WeihanLi.Redis.UnitTest";
        config.ChannelPrefix = "WeihanLi.Redis.UnitTest";
        config.EnableCompress = false;// disable compress
    });

Basic usage 基本用法

  1. Cache 缓存

    缓存的基本操作主要是基于 RedisManager.CacheClient

    缓存的基本操作定义在 ICacheClient 中,基本操作如下:

    var key = "test111";
    var value = "Hello WeihanLi.Redis";
    Assert.True(RedisManager.CacheClient.Set(key,value));
    Assert.True(RedisManager.CacheClient.Exists(key));
    Assert.Equal(value,RedisManager.CacheClient.Get(key));
    Assert.True(RedisManager.CacheClient.Remove(key));
    Assert.False(RedisManager.CacheClient.Exists(key));
    RedisManager.CacheClient.GetOrSet(key,() => value,TimeSpan.FromSeconds(10));
    
  2. Counter 计数器

    var counterName = "counterTest";
    var counterClient = RedisManager.GetCounterClient(counterName,TimeSpan.FromSeconds(60));
    Assert.Equal(0,counterClient.Base);
    Assert.Equal(0,counterClient.Count());
    counterClient.Increase();
    Assert.Equal(1,counterClient.Count());
    counterClient.Increase(5);
    Assert.Equal(6,counterClient.Count());
    counterClient.Decrease(3);
    Assert.Equal(3,counterClient.Count());
    Assert.True(counterClient.Reset());
    Assert.Equal(0,counterClient.Count());
    
  3. Firewall 防火墙

    var firewallName = "firewallTest";
    var firewallClient = RedisManager.GetFirewallClient(firewallName,TimeSpan.FromSeconds(3));
    Assert.True(firewallClient.Hit());
    Assert.False(firewallClient.Hit());
    await Task.Delay(TimeSpan.FromSeconds(3));
    Assert.True(firewallClient.Hit());
    
  4. RedLock Redis分布式锁

    using (var client = RedisManager.GetRedLockClient("redLockTest"))
    {
        Assert.True(client.TryLock(TimeSpan.FromSeconds(10)));
        using (var client1 = RedisManager.GetRedLockClient("redLockTest"))
        {
            Assert.False(client.TryLock(TimeSpan.FromSeconds(10)));
            Assert.False(client1.Release());
        }
        Assert.True(client.Release());
    }
    
    var key = Guid.NewGuid().ToString("N");
    using (var client = RedisManager.GetRedLockClient(key))
    {
        Assert.True(client.TryLock(TimeSpan.FromSeconds(20)));
    }
    
    using (var client = RedisManager.GetRedLockClient(key))
    {
        Assert.True(client.TryLock(TimeSpan.FromMinutes(3)));
        Assert.True(client.Release());
    }
    
  5. Rank 排行榜

    var rankClient = RedisManager.GetRankClient<string>("testRank");
    Assert.Equal(0,rankClient.Length());
    rankClient.Add("xiaoming",100);
    rankClient.Add("xiaohong",95);
    rankClient.Add("xiaowang",96);
    Assert.Equal(3,rankClient.Length());
    Assert.Equal(100,rankClient.Score("xiaoming"));
    var rank = rankClient.RangeByScore();
    Assert.Equal("xiaohong",rank[0]);
    rank = rankClient.RangeByScore(order: Order.Descending);
    Assert.Equal("xiaoming",rank[0]);
    var common = RedisManager.GetCommonRedisClient(RedisDataType.Rank);
    Assert.True(common.KeyDelete("testRank"));
    
  6. 更多用法等你来发现...

Conatct

Contact me: weihanli@outlook.com

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读