<NME> README.md
<BEF> **StackExchange.Redis.Extensions** is a library that extends [StackExchange.Redis](https://github.com/StackExchange/StackExchange.Redis) allowing you a set of functionality needed by common applications. The library is signed and completely compatible with the **.NET Standard 2.0, .NET Framework 4.6.1, .NET Framework 4.7.2, .NET Core 3.x, .NET 5.0, .NET 6.0** 



The idea of this library is to make easier your live when you need to send / receive objects into Redis, in fact it wraps what the main library [StackExchange.Redis](https://github.com/StackExchange/StackExchange.Redis) offers but serializing and deserializing your objects.

- Here the list of the most asked features:
- Add and retrieve complex object from and to Redis;
- Store and retrieve multiple object with a single request;
- Pub/Sub events;
- Support to Hash methods (https://redis.io/commands/hset);
- Sort methods (https://redis.io/commands/sort);
- List methods (https://redis.io/commands/lpush);
- **Retrieve multiple object with a single roundtrip**;
- **Store multiple object with a single roundtrip**;
- **Async methods**;
- **Much more**;

##How to install it
- Profiling Session Provider;



[Documentation](doc/README.md) is composed of articles and guidance detailing how to get the most out of StackExchange.Redis.Extensions



### Release

![.NET Core](https://github.com/imperugo/StackExchange.Redis.Extensions/actions/workflows/dotnetcore.yml/badge.svg)

Latest release is available on NuGet.

| Channel                  | Status                                                       |
| ------------------------ | ------------------------------------------------------------ |
| Nuget (Core)             | [![NuGet Status](http://img.shields.io/nuget/v/StackExchange.Redis.Extensions.Core.svg?style=flat)](https://www.nuget.org/packages/StackExchange.Redis.Extensions.Core/) |
| Nuget (Json.NET)         | [![NuGet Status](http://img.shields.io/nuget/v/StackExchange.Redis.Extensions.Newtonsoft.svg?style=flat)](https://www.nuget.org/packages/StackExchange.Redis.Extensions.Newtonsoft/) |
| Nuget (MsgPack)          | [![NuGet Status](http://img.shields.io/nuget/v/StackExchange.Redis.Extensions.MsgPack.svg?style=flat)](https://www.nuget.org/packages/StackExchange.Redis.Extensions.MsgPack/) |
| Nuget (Protobuf)         | [![NuGet Status](http://img.shields.io/nuget/v/StackExchange.Redis.Extensions.Protobuf.svg?style=flat)](https://www.nuget.org/packages/StackExchange.Redis.Extensions.Protobuf/) |
| Nuget (UTF8Json)         | [![NuGet Status](http://img.shields.io/nuget/v/StackExchange.Redis.Extensions.Utf8Json.svg?style=flat)](https://www.nuget.org/packages/StackExchange.Redis.Extensions.Utf8Json/) |
| Nuget (System.Text.Json) | [![NuGet Status](http://img.shields.io/nuget/v/StackExchange.Redis.Extensions.System.Text.Json.svg?style=flat)](https://www.nuget.org/packages/StackExchange.Redis.Extensions.System.Text.Json/) |



### Q&A

For questions or issues do not hesitate to [raise an issue](https://github.com/imperugo/StackExchange.Redis.Extensions/issues/new/choose) or [get in touch](https://twitter.com/imperugo).

### Contributing

Thanks to all the people who already contributed!

<a href="https://github.com/imperugo/StackExchange.Redis.Extensions/graphs/contributors">
  <img src="https://contributors-img.web.app/image?repo=imperugo/StackExchange.Redis.Extensions" />
</a>

### License
StackExchange.Redis is Copyright ©  [Ugo Lattanzi](https://www.linkedin.com/in/imperugo/) and other contributors under the MIT license.
- [**BinarySerialization**](http://msdn.microsoft.com/en-us/library/72hyey7b%28v=vs.110%29.aspx) (Requires ```SerializableAttribute``` on top of the class to store into Redis)
- [**NewtonSoft**](https://github.com/JamesNK/Newtonsoft.Json) (Uses JSon.Net to serialize a class without ```SerializableAttribute```)
- [**Jil**](https://github.com/kevin-montrose/Jil) (Use super fast json serializer)


## How can I store an object into Redis?
```

## How can I retrieve multiple object with single roundtrip?
That's a cool feature that is implemented into ICacheClient implementation:

```csharp
var cachedUsers = myCacheClient.GetAll<User>(new {"key1","key2","key3"});

## Can I use a Redis method directly from ICacheClient without add another dependency to my class?

Of course you can. ```ICacheClient``` exposes a readonly property named Database that is the implementation of IDatabase by [StackExchange.Redis](https://github.com/StackExchange/StackExchange.Redis)

```csharp
myCacheClient.Database.SetAdd("mykey","another key");
```

## How can I get server information?
ICacheClient has a method ```GetInfo``` and ```GetInfoAsync``` for that:

```csharp
var info = myCacheClient.GetInfo();

<MSG> updated documentation

<DFF> @@ -14,6 +14,7 @@ For example:
 - **Retrieve multiple object with a single roundtrip**;
 - **Store multiple object with a single roundtrip**;
 - **Async methods**;
+- **Retrieve Redis Server status**;
 - **Much more**;
 
 ##How to install it
@@ -70,6 +71,7 @@ To offer the opportunity to store a class into Redis, that class must be seriali
 - [**BinarySerialization**](http://msdn.microsoft.com/en-us/library/72hyey7b%28v=vs.110%29.aspx) (Requires ```SerializableAttribute``` on top of the class to store into Redis)
 - [**NewtonSoft**](https://github.com/JamesNK/Newtonsoft.Json) (Uses JSon.Net to serialize a class without ```SerializableAttribute```)
 - [**Jil**](https://github.com/kevin-montrose/Jil) (Use super fast json serializer)
+- [**MessagePack CLI**](https://github.com/msgpack/msgpack-cli) (serialization/deserialization for CLI)
 
 
 ## How can I store an object into Redis?
@@ -97,7 +99,7 @@ var cachedUser = myCacheClient.Get<User>("my cache key");
 ```
 
 ## How can I retrieve multiple object with single roundtrip?
-That's a cool feature that is implemented into ICacheClient implementation:
+That's a cool feature that is implemented into ```ICacheClient``` implementation:
 
 ```csharp
 var cachedUsers = myCacheClient.GetAll<User>(new {"key1","key2","key3"});
@@ -132,14 +134,14 @@ var keys = myCacheClient.SearchKeys("*myCacheKey");
 
 ## Can I use a Redis method directly from ICacheClient without add another dependency to my class?
 
-Of course you can. ```ICacheClient``` exposes a readonly property named Database that is the implementation of IDatabase by [StackExchange.Redis](https://github.com/StackExchange/StackExchange.Redis)
+Of course you can. ```ICacheClient``` exposes a readonly property named ```Database``` that is the implementation of IDatabase by [StackExchange.Redis](https://github.com/StackExchange/StackExchange.Redis)
 
 ```csharp
 myCacheClient.Database.SetAdd("mykey","another key");
 ```
 
 ## How can I get server information?
-ICacheClient has a method ```GetInfo``` and ```GetInfoAsync``` for that:
+```ICacheClient``` has a method ```GetInfo``` and ```GetInfoAsync``` for that:
 
 ```csharp
 var info = myCacheClient.GetInfo();

updated documentation