Skip to content
Redis wrappers by StackExchange.Redis
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Zaabee.StackExchangeRedis
.gitignore
LICENSE
README.md
Zaabee.Redis.sln

README.md

Zaabee.Redis

Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes, HyperLogLogs, Bitmaps. http://redis.io

Introduction

This redis client wrappers and serializers.

QuickStart

NuGet

Install-Package Zaabee.StackExchangeRedis
Install-Package Zaabee.StackExchangeRedis.NewtonsoftJson

Build Project

Create an asp.net core project and import references in startup.cs. Get Zaabee.StackExchangeRedis and Zaabee.StackExchangeRedis.NewtonsoftJson from Nuget,otherwise we have other serializers:

Zaabee.StackExchangeRedis.Binary

Zaabee.StackExchangeRedis.Jil

Zaabee.StackExchangeRedis.MsgPack

Zaabee.StackExchangeRedis.Protobuf

Zaabee.StackExchangeRedis.Utf8Json

Zaabee.StackExchangeRedis.ZeroFormatter

using Zaabee.StackExchangeRedis;
using Zaabee.StackExchangeRedis.Abstractions;
using Zaabee.StackExchangeRedis.ISerialize;
using Zaabee.StackExchangeRedis.NewtonsoftJson;

Register ZaabyRedisClient in Configuration like

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    services.AddSingleton<IZaabeeRedisClient, ZaabeeRedisClient>(p =>
        new ZaabeeRedisClient(new RedisConfig("192.168.78.152:6379,abortConnect=false,syncTimeout=3000"),
            new Serializer()));
}

Add a TestClass for the demo

[ProtoContract]
public class TestModel
{
    [ProtoMember(1)]
    public Guid Id { get; set; }

    [ProtoMember(2)]
    public string Name { get; set; }

    [ProtoMember(3)]
    public int Age { get; set; }

    [ProtoMember(4)]
    public DateTime CreateTime { get; set; }
}

Create a controller like this

[Route("api/[controller]/[action]")]
[ApiController]
public class RedisDemoController : ControllerBase
{
    private readonly IZaabeeRedisClient _redisHandler;

    public RedisDemoController(IZaabeeRedisClient handler)
    {
        _redisHandler = handler;
    }

    [HttpGet]
    [HttpPost]
    public Guid Add()
    {
        var testModel = new TestModel
        {
            Id = Guid.NewGuid(),
            Name = "apple",
            Age = 18,
            CreateTime = DateTime.Now
        };
        _redisHandler.Add(testModel.Id.ToString(), testModel);
        return testModel.Id;
    }

    [HttpGet]
    [HttpPost]
    public List<string> AddRange(int quantity)
    {
        var testModles = new List<Tuple<string, TestModel>>();
        for (var i = 0; i < quantity; i++)
        {
            var id = Guid.NewGuid();
            testModles.Add(new Tuple<string, TestModel>(id.ToString(),
                new TestModel
                {
                    Id = id,
                    Name = "apple",
                    Age = 18,
                    CreateTime = DateTime.Now
                }));
        }

        _redisHandler.AddRange(testModles);

        return testModles.Select(p => p.Item1).ToList();
    }

    [HttpGet]
    [HttpPost]
    public void Delete(string key)
    {
        _redisHandler.Delete(key);
    }

    [HttpGet]
    [HttpPost]
    public void DeleteAll([FromBody]IList<string> keys)
    {
        _redisHandler.DeleteAll(keys);
    }

    [HttpGet]
    [HttpPost]
    public TestModel Get(string key)
    {
        return _redisHandler.Get<TestModel>(key);
    }

    [HttpGet]
    [HttpPost]
    public Dictionary<string, TestModel> GetAll([FromBody]IList<string> keys)
    {
        return _redisHandler.Get<TestModel>(keys);
    }
}

Now you can run a Postman and send some requests to try it.And the ZaabyRedisClient has async methods like AddAsync/AddRangeAsync/DeleteAsync/DeleteAllAsync,you can try it yourself.

You can’t perform that action at this time.