/Aoxe.Redis

Redis wrappers by StackExchange.Redis

Primary LanguageC#MIT LicenseMIT

Aoxe.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 Aoxe.StackExchangeRedis
Install-Package Aoxe.NewtonsoftJson

Build Project

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

Aoxe.Binary

Aoxe.Jil

Aoxe.MsgPack

Aoxe.Protobuf

Aoxe.SystemTextJson

Aoxe.Utf8Json

Aoxe.Xml

Aoxe.ZeroFormatter

using Aoxe.StackExchangeRedis;
using Aoxe.StackExchangeRedis.Abstractions;
using Aoxe.NewtonsoftJson;

Register AoxeRedisClient in Configuration like

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
    services.AddSingleton<IAoxeRedisClient>(p =>
        new AoxeRedisClient(new AoxeStackExchangeRedisOptions
                {
                    ConnectionString = "192.168.78.140:6379,abortConnect=false,syncTimeout=3000"),
                    DefaultExpiry = TimeSpan.FromMinutes(10),
                    Serializer = new AoxeSerializer()
                });
}

Add a TestClass for the demo

public class TestModel
{
    public Guid Id { get; set; }

    public string Name { get; set; }

    public int Age { get; set; }

    public DateTime CreateTime { get; set; }
}

Create a controller like this

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

    public RedisDemoController(IAoxeRedisClient 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 AoxeRedisClient has async methods like AddAsync/AddRangeAsync/DeleteAsync/DeleteAllAsync,you can try it yourself.