YokoRedis 2.2.1
.NET Standard 2.0
This package targets .NET Standard 2.0. The package is compatible with this framework or higher.
.NET Framework 4.6.2
This package targets .NET Framework 4.6.2. The package is compatible with this framework or higher.
dotnet add package YokoRedis --version 2.2.1
NuGet\Install-Package YokoRedis -Version 2.2.1
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="YokoRedis" Version="2.2.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add YokoRedis --version 2.2.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: YokoRedis, 2.2.1"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install YokoRedis as a Cake Addin #addin nuget:?package=YokoRedis&version=2.2.1 // Install YokoRedis as a Cake Tool #tool nuget:?package=YokoRedis&version=2.2.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
[TOC]
更新日志
2.2.1
【新增】根据key的模糊查询结果批量删除
【优化】部分异步bug
单机 Redis
var myredis = new YokoRedis.YokoRedisClient("127.0.0.1:6379,password=12345678,defaultDatabase=0,prefix=test:");
范围 | 默认 | 解释 |
---|---|---|
user | <Empty> | Redis 服务器用户(redis 6.0+) |
password | <Empty> | Redis 服务器密码 |
defaultDatabase | 0 | Redis 服务器数据库 |
asyncPipeline | false | 异步方式自动使用流水线 |
poolsize | 50 | 连接池大小 |
idleTimeout | 20000 | 连接池中元素的空闲时间(MS),适合连接远程redis服务器 |
connectTimeout | 5000 | 连接超时 (MS) |
syncTimeout | 10000 | 发送/接收超时 (MS) |
preheat | 5 | 预热连接,接收值如 preheat = 5 , 预热 5 个连接 |
autoDispose | true | 跟随系统退出事件自动释放 |
ssl | false | 启用加密传输 |
testcluster | true | 是否尝试集群模式,阿里云、腾讯云集群需要设置此选项为 false |
tryit | 0 | 执行错误,重试尝试 |
name | <Empty> | 连接名称,使用client list命令查看 |
prefix | <Empty> | key前辍,设置后,所有方法都会附带此前辍,yokoredis.Set(prefix + "key", 111); |
Net462/Net472/Net48
//初始化
RedisHelper.Initialization(new YokoRedis.YokoRedisClient("127.0.0.1:6379,defaultDatabase=3,prefix=test:"));
RedisHelper.Set("666", "12345678", 60);
//var t1 = RedisHelper.CacheShell("666", 60, () => "缓存壳12345678");
//Console.WriteLine(t1);
var t2 = RedisHelper.Get("666");
Console.WriteLine(t2);
Net Core/Net5/Net6
在分布式缓存 IDistributedCache 接口用使用Redis
添加包 YokoRedis.Caching
注:YokoRedisClient 为单例,推荐使用 RedisHelper 静态类,方法名与redis cli的命令相同
//初始化
RedisHelper.Initialization(new YokoRedis.YokoRedisClient("127.0.0.1:6379,defaultDatabase=1,prefix=test:"));
//普通模式
services.AddSingleton<IDistributedCache>(new Microsoft.Extensions.Caching.Redis.YokoRedisCache(RedisHelper.Instance));
//也可以使用一般用法
// var myredis = new YokoRedis.YokoRedisClient("198.98.98.10:6371,defaultDatabase=11,prefix=key前辍");
// services.AddSingleton<IDistributedCache>(new Microsoft.Extensions.Caching.Redis.YokoRedisCache(myredis));
//集群模式:初始化的时候写多几个就行了
var myredis = new YokoRedis.YOkoRedisClient(null, "198.98.98.10:6371,defaultDatabase=11,prefix=key前辍", "198.98.98.11:6372,defaultDatabase=12,prefix=key前辍", "198.98.98.12:6373,defaultDatabase=13,prefix=key前辍", "198.98.98.13:6374,defaultDatabase=14,prefix=key前辍");
RedisHelper.Set("001", "66666666", 60);
RedisHelper.Get("001");
- 缓存对象扩展方法
IDistributedCache cache = xxxx;
object obj1 = new xxxx();
cache.SetObject("key1", obj1);
object obj2 = cache.GetObject("key1");
T obj3 = cache.GetObject<T>("key1");
//批量删除
cache.Remove("key1|key2");
缓存壳
//不加缓存的时候,要从数据库查询
var data = db.Queryable<Order>().ToList();
//一般的缓存代码,如果不封装还需要自己判断
var cacheValue = RedisHelper.Get("test1");
if (string.IsNullOrEmpty(cacheValue)) {
var data = db.Queryable<Order>().ToList();;
RedisHelper.Set("test1", data, 60); //缓存60秒
return data;
}else{
try {
return cacheValue;
} catch {
RedisHelper.Remove("test1");//出错时删除key
throw;
}
}
//使用缓存壳效果同上,以下示例使用 string 和 hash 缓存数据
var t1 = RedisHelper.CacheShell("test1", 10, () => db.Queryable<Order>().ToList());
var t2 = RedisHelper.CacheShell("test", "1", 10, () => db.Queryable<Order>().ToList());
var t3 = RedisHelper.CacheShell("test", new [] { "1", "2" }, 10, notCacheFields => new [] {
("1", db.Queryable<Order>().ToList()),
("2", db.Queryable<Order2>().ToList())
});
操作多个数据库
var connectionString = "127.0.0.1:6379";
var redis = new YokoRedisClient[14];
for (var a = 0; a< redis.Length; a++) {
redis[a] = new YokoRedisClient(connectionString + ",defaultDatabase=" + a);
}
redis[1].Get("001");
多个 RedisHelper
public abstract class MyHelper1 : RedisHelper<MyHelper1> {}
public abstract class MyHelper2 : RedisHelper<MyHelper2> {}
MyHelper1.Initialization(new YokoRedisClient("...."));
MyHelper2.Initialization(new YokoRedisClient("...."));
订阅/发布
//原生订阅
RedisHelper.Subscribe(
("chan1", msg => Console.WriteLine(msg.Body)),
("chan2", msg => Console.WriteLine(msg.Body)));
RedisHelper.PSubscribe(new[] { "test*", "*test001", "test*002" }, msg => {
Console.WriteLine($"PSUB {msg.MessageId}:{msg.Body} {msg.Pattern}: chan:{msg.Channel}");
});
//模式订阅:
//1、分区的节点匹配规则,导致通配符最大可能匹配全部节点,所以全部节点都要订阅
//2、本组 "test*", "*test001", "test*002" 订阅全部节点时,需要解决同一条消息不可执行多次
RedisHelper.Publish("chan1", "123123123");
Redis 哨兵模式
var myredis = new YokoRedis.YokoRedisClient("mymaster,password=12345678,prefix=test:",
new [] { "198.98.98.10:6379", "198.98.98.11:6379", "198.98.98.12:6379" });
只读:new YokoRedisClient("mymaster,password=123", new [] { Sentinels }, false)
管道模式
使用管道模式,打包多条命令一起执行,从而提高性能。
var ret1 = RedisHelper.StartPipe(p => p.Set("a", "1").Get("a"));
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. |
.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 is compatible. |
.NET Framework | net461 was computed. net462 is compatible. net463 was computed. net47 was computed. net471 was computed. net472 is compatible. net48 is compatible. 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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETFramework 4.6.2
- Newtonsoft.Json (>= 13.0.1)
- System.ValueTuple (>= 4.5.0)
-
.NETFramework 4.7.2
- Newtonsoft.Json (>= 13.0.1)
- System.ValueTuple (>= 4.5.0)
-
.NETFramework 4.8
- Newtonsoft.Json (>= 13.0.1)
- System.ValueTuple (>= 4.5.0)
-
.NETStandard 2.0
- Newtonsoft.Json (>= 13.0.1)
- System.ValueTuple (>= 4.5.0)
-
.NETStandard 2.1
- Newtonsoft.Json (>= 13.0.1)
- System.ValueTuple (>= 4.5.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.