Sea*_*ean 7 c# asp.net redis stackexchange.redis
我从StackExchange.Redis文档中获取有关如何使用IDatabase的混合消息.在基本用法文档中,它说:
从GetDatabase返回的对象是一个廉价的pass-thru对象,不需要存储.
这给人的印象是我应该为每个Redis操作调用GetDatabase.
但是,从流水线和多路复用文档,通过语言和示例代码,您似乎应该重新使用IDatabase对象来利用流水线和多路复用.我说它似乎是这样的,因为示例代码块重用了相同的db,并且因为它讨论了重用连接.现在,我不确定连接是指GetDatabase返回的对象,还是底层连接或什么.
我正在从asp.net Web应用程序访问Redis,所以我需要优化我的代码以实现高度多线程访问.我应该为每个操作调用GetDatabase,还是应该由多个线程共享IDatabase对象?如果是后者,到什么程度?是否应该无限期地在整个应用程序中共享一个数据库对象?
Kei*_*ith 10
使用ConnectionMultiplexer跨多个线程.我正在使用.NET Core依赖注入,但你可以使用
static readonly Lazy<ConnectionMultiplexer> SharedMultiplexer =>
new Lazy<ConnectionMultiplexer>(() => ConnectionMultiplexer.Connect("localhost"));
Run Code Online (Sandbox Code Playgroud)
GetDatabase()在特定请求中需要之前调用.
在异步操作中使用内联async和await继续方法,以确保优化高度并发访问...
string value = await SharedMultiplexer.GetDatabase().StringGetAsync("mykey");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2376 次 |
| 最近记录: |