ZayniFramework.Caching.RedisClient
2.2.1
See the version list below for details.
dotnet add package ZayniFramework.Caching.RedisClient --version 2.2.1
NuGet\Install-Package ZayniFramework.Caching.RedisClient -Version 2.2.1
<PackageReference Include="ZayniFramework.Caching.RedisClient" Version="2.2.1" />
<PackageVersion Include="ZayniFramework.Caching.RedisClient" Version="2.2.1" />
<PackageReference Include="ZayniFramework.Caching.RedisClient" />
paket add ZayniFramework.Caching.RedisClient --version 2.2.1
#r "nuget: ZayniFramework.Caching.RedisClient, 2.2.1"
#:package ZayniFramework.Caching.RedisClient@2.2.1
#addin nuget:?package=ZayniFramework.Caching.RedisClient&version=2.2.1
#tool nuget:?package=ZayniFramework.Caching.RedisClient&version=2.2.1
Caching.RedisClient module example.
You can use the ZayniFramework.Caching.RedisClient module to help you to access the Redis Server. It helps you control the connection between and provide all the request & response action log between your application and Redis Server.
Add namespace using. You might need to add the StackExchange.Redis namespace too.
using StackExchange.Redis;
using ZayniFramework.Caching.RedisClientComponent;
using ZayniFramework.Common;
using ZayniFramework.Serialization;
Then, config your Redis Server connection in your app.config file. Like this,
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="ZayniFramework" type="ZayniFramework.Common.ZayniConfigSection, ZayniFramework.Common" />
</configSections>
<ZayniFramework>
<LoggingSettings eventLogEnable="false" logEnable="true">
<DefaultTextLogger>
<add name="_DefaultLog" enable="true" maxSize="8">
<LogFile path="D:\Logs\Zayni\Tracing.log" />
<Filter filterType="deny" category="Information,Warning" />
</add>
<add name="RedisClientTrace:MyLab" enable="true" maxSize="8" dbLoggerName="Zayni" dbLoggerType="MySQL">
<LogFile path="D:\Logs\Zayni\RedisClient-Tracing-Taipei-Dev.log" />
</add>
</DefaultTextLogger>
</LoggingSettings>
<RedisClientSettings>
<RedisClients>
<add name="RedisServer1" isDefault="true" traceLoggerName="RedisClientTrace:MyLab" host="XXX.XXX.XXX.XXX " port="6379" password="" dbNumber="1" connectTimeout="5000" responseTimeout="1000" />
</RedisClients>
</RedisClientSettings>
</ZayniFramework>
<connectionStrings>
<add name="Zayni" connectionString="SERVER=XXX.XXX.XXX.XXX;DATABASE=zayni;UID=XXX;PASSWORD=XXX;Allow User Variables=True;Charset=utf8;Convert Zero Datetime=True"
providerName="MySql.Data.MySqlClient" />
</connectionStrings>
</configuration>
Get a RedisClient object from the RedisClientContainer.
// Get the 'isDefault=ture'.
RedisClient redisClient = RedisClientContainer.Get();
// Get a RedisClient from the RedisClientContainer. By name.
RedisClient redisClient = RedisClientContainer.Get( "RedisServer1" );
Using StackExchange.Redis method to access redis server.
- With better performance.
- But no request and response action log between redis server.
// You can use the StackExchange.Redis' method like this. BUT you won't have a action log if you choose this way to access redis server. (Better performance!)
// Put string data into redis server. Using StringSet method.
bool isSuccess = redisClient.Db.StringSet( "MyKey", "AAA", when: When.Always );
// Get string data from redis sever. Using StringGet method.
string result = redisClient.Db.StringGet( "MyKey" );
Using RedisClient's wrapper method to access redis server.
- You will have the request and response log between redis server if you config the app.config correctly.
- The performance will be slower...
// Declare a delegate to wrap the StachExchange.Redis' method like this.
Delegate stringSet = (Func<string, string, When, bool>)( ( key, value, when ) => redisClient.Db.StringSet( key, value, when: when ) );
// Use RedisClient's ExecResult wrapper method to invoke the delegate like this.
// Put string data into redis server.
var r1 = redisClient.ExecResult<bool>( stringSet, "ZayniTest2", "BBB", When.Always );
Assert.IsTrue( r1.Success );
Assert.IsTrue( r1.Data );
Delegate stringGet = (Func<string, string>)( key => redisClient.Db.StringGet( key ) );
var r2 = redisClient.ExecResult<string>( stringGet, "ZayniTest2" );
Assert.IsTrue( r2.Success );
Assert.AreEqual( "BBB", r2.Data );
// =================
var hashName = new HashEntry( "name", "Pony Lin" );
var hashAge = new HashEntry( "age", 32 );
var hashSex = new HashEntry( "sex", 1 );
var hashDoB = new HashEntry( "dob", "1985-05-25" );
var hashSet = (Action<string, HashEntry[]>)( ( key, hashFields ) => redisClient.Db.HashSet( key, hashFields ) );
var r = redisClient.Exec( hashSet, "ZayniTest3", new HashEntry[] { hashName, hashAge, hashSex, hashDoB } );
Assert.IsTrue( r.Success );
var hashGet = (Func<string, string, string>)( ( key, hashField ) => redisClient.Db.HashGet( key, hashField ) );
var name = redisClient.ExecResult<string>( hashGet, "ZayniTest3", "name" ).Data;
var age = redisClient.ExecResult<string>( hashGet, "ZayniTest3", "age" ).Data;
var sex = redisClient.ExecResult<string>( hashGet, "ZayniTest3", "sex" ).Data;
var dob = redisClient.ExecResult<string>( hashGet, "ZayniTest3", "dob" ).Data;
Assert.AreEqual( "Pony Lin", name );
Assert.AreEqual( "32", age );
Assert.AreEqual( "1", sex );
Assert.AreEqual( "1985-05-25", dob );
Use the RedisClient's PutHashObject and GetHashObject methods.
var source = new UserModel()
{
Name = "Nancy",
Age = 26,
Birthday = new DateTime( 1993, 2, 24 ),
CashBalance = 3000,
TotalAssets = 4100
};
string key = $"ZayniTest123:{source.Name}";
// Put a data into redis in a hash type.
var p = redisClient.PutHashObject( key, source );
Assert.IsTrue( p.Success );
// Get a data from redis in a hash type.
var g = redisClient.GetHashObject<UserModel>( key );
Assert.IsTrue( g.Success );
Assert.AreEqual( source.Name, g.Data.Name );
Assert.AreEqual( source.Age, g.Data.Age );
Assert.AreEqual( source.Birthday, g.Data.Birthday );
Assert.AreEqual( source.CashBalance, g.Data.CashBalance );
Assert.AreEqual( source.TotalAssets, g.Data.TotalAssets );
More detail sample code. You can go to Test/UnitTests/Zayni.Caching.RedisClient.Test directory.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- StackExchange.Redis (>= 2.0.495)
- ZayniFramework.Common (>= 2.2.1)
- ZayniFramework.Logging (>= 2.2.1)
- ZayniFramework.Serialization (>= 2.2.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated |
---|---|---|
8.0.142 | 194 | 3/19/2024 |
8.0.141 | 204 | 1/4/2024 |
8.0.140 | 186 | 12/17/2023 |
6.0.138 | 176 | 3/19/2024 |
6.0.137 | 188 | 9/20/2023 |
6.0.136 | 185 | 9/14/2023 |
6.0.135 | 191 | 9/10/2023 |
6.0.134 | 298 | 7/12/2023 |
6.0.133 | 239 | 7/10/2023 |
6.0.132 | 227 | 7/7/2023 |
6.0.131 | 218 | 6/19/2023 |
6.0.130 | 219 | 6/19/2023 |
6.0.129 | 616 | 7/2/2022 |
6.0.128 | 591 | 1/16/2022 |
6.0.127 | 533 | 1/15/2022 |
6.0.126 | 565 | 1/15/2022 |
6.0.125 | 425 | 1/8/2022 |
6.0.125-hotfix1 | 297 | 1/8/2022 |
6.0.124 | 356 | 1/7/2022 |
6.0.123 | 457 | 11/14/2021 |
5.0.129 | 550 | 7/2/2022 |
5.0.128 | 638 | 1/16/2022 |
5.0.125 | 432 | 1/8/2022 |
5.0.124 | 392 | 1/7/2022 |
5.0.123 | 554 | 11/14/2021 |
5.0.122 | 559 | 10/11/2021 |
5.0.121 | 593 | 5/1/2021 |
3.1.137 | 181 | 9/20/2023 |
3.1.136 | 167 | 9/14/2023 |
3.1.135 | 183 | 9/10/2023 |
3.1.134 | 226 | 7/12/2023 |
3.1.133 | 214 | 7/11/2023 |
3.1.132 | 211 | 7/8/2023 |
3.1.131 | 216 | 6/19/2023 |
3.1.130 | 384 | 2/1/2023 |
3.1.129 | 588 | 7/2/2022 |
3.1.128 | 620 | 1/16/2022 |
3.1.125 | 420 | 1/8/2022 |
3.1.124 | 424 | 1/7/2022 |
3.1.123 | 564 | 11/14/2021 |
3.1.122 | 490 | 10/11/2021 |
3.1.121 | 621 | 5/1/2021 |
2.31.120 | 551 | 3/14/2021 |
2.30.115 | 600 | 3/6/2021 |
2.30.114 | 547 | 3/6/2021 |
2.20.101 | 580 | 3/1/2021 |
2.19.3 | 532 | 2/11/2021 |
2.19.2 | 623 | 2/6/2021 |
2.19.1 | 538 | 1/6/2021 |
2.19.0 | 580 | 1/1/2021 |
2.18.3 | 686 | 12/27/2020 |
2.18.2 | 669 | 8/29/2020 |
2.18.1 | 703 | 8/26/2020 |
2.18.0 | 691 | 8/20/2020 |
2.17.135 | 631 | 8/19/2020 |
2.17.134 | 737 | 7/28/2020 |
2.17.133 | 724 | 7/27/2020 |
2.17.132 | 717 | 7/18/2020 |
2.17.131 | 700 | 7/11/2020 |
2.16.130 | 717 | 6/13/2020 |
2.15.128 | 731 | 6/3/2020 |
2.15.127 | 797 | 5/31/2020 |
2.15.126 | 761 | 4/30/2020 |
2.14.122 | 698 | 4/13/2020 |
2.13.100 | 727 | 3/12/2020 |
2.12.51 | 747 | 2/18/2020 |
2.11.50 | 1,347 | 2/10/2020 |
2.10.44 | 1,375 | 1/30/2020 |
2.9.43 | 1,529 | 1/11/2020 |
2.8.42 | 1,484 | 1/10/2020 |
2.8.41 | 1,388 | 1/5/2020 |
2.7.40 | 1,364 | 1/2/2020 |
2.7.39 | 1,403 | 1/2/2020 |
2.7.38 | 1,556 | 1/1/2020 |
2.6.37 | 1,459 | 12/23/2019 |
2.6.35 | 1,310 | 12/4/2019 |
2.6.1 | 1,346 | 12/2/2019 |
2.6.0 | 1,369 | 11/28/2019 |
2.5.2 | 1,630 | 11/26/2019 |
2.5.1 | 1,360 | 11/12/2019 |
2.5.0 | 1,404 | 11/9/2019 |
2.4.3 | 1,041 | 10/16/2019 |
2.4.2 | 1,082 | 10/16/2019 |
2.4.1 | 1,028 | 9/20/2019 |
2.3.113 | 554 | 3/6/2021 |
2.3.112 | 540 | 3/6/2021 |
2.3.28 | 1,403 | 9/19/2019 |
2.3.27 | 1,163 | 8/30/2019 |
2.3.26 | 1,275 | 8/20/2019 |
2.3.25 | 787 | 8/12/2019 |
2.3.22 | 1,038 | 7/31/2019 |
2.3.21 | 1,094 | 7/20/2019 |
2.3.20 | 1,178 | 6/22/2019 |
2.3.19 | 1,243 | 6/14/2019 |
2.3.18 | 1,048 | 6/13/2019 |
2.3.17 | 823 | 6/13/2019 |
2.3.15 | 1,114 | 6/8/2019 |
2.3.14 | 907 | 6/8/2019 |
2.3.13 | 1,509 | 5/30/2019 |
2.3.12 | 783 | 5/24/2019 |
2.3.11 | 817 | 5/24/2019 |
2.3.10 | 847 | 5/21/2019 |
2.3.9 | 822 | 5/9/2019 |
2.3.8 | 814 | 5/8/2019 |
2.3.7 | 871 | 4/30/2019 |
2.3.6 | 911 | 4/23/2019 |
2.3.5 | 797 | 4/19/2019 |
2.3.4 | 818 | 4/18/2019 |
2.3.3 | 803 | 4/17/2019 |
2.3.2 | 807 | 4/6/2019 |
2.3.1 | 943 | 12/15/2018 |
2.3.0 | 958 | 12/7/2018 |
2.2.6 | 991 | 11/25/2018 |
2.2.1 | 945 | 11/17/2018 |
2.2.0 | 948 | 11/16/2018 |
2.1.0 | 981 | 11/15/2018 |
2.0.1 | 976 | 11/6/2018 |
2.0.0 | 984 | 11/4/2018 |