zoukankan      html  css  js  c++  java
  • 使用WeihanLi.Redis操作Redis

    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

  • 相关阅读:
    解决ListView异步加载数据之后不能点击的问题
    android点击实现图片放大缩小 java技术博客
    关于 数据文件自增长 的一点理解
    RAC 实例不能启动 ORA1589 signalled during ALTER DATABASE OPEN
    Linux 超级用户的权利
    RAC 实例 迁移到 单实例 使用导出导入
    Shell 基本语法
    Linux 开机引导与关机过程
    RAC 实例不能启动 ORA1589 signalled during ALTER DATABASE OPEN
    Oracle RAC + Data Guard 环境搭建
  • 原文地址:https://www.cnblogs.com/weihanli/p/Use-WeihanLi-Redis.html
Copyright © 2011-2022 走看看