我必须使用stackexhange.redis C#经常在redis缓存中添加N(独立)项,每个项目的过期时间不同,这样客户端的时间最少,服务器端的阻塞和成本最小。Redis服务器每秒将接收数百个get请求,因此我根本不想浪费获取时间。
我已经阅读了文档这里并回答了这里。我找不到一个方法来执行这个操作。考虑到不同的选择:
哪一个应该是最好的方法?我假设竞争操作意味着两个插入和一个get和insert不能在一起,尽管它们可能访问不同的密钥。我说对了吗,否则这意味着什么?
发布于 2017-03-12 21:48:35
对于数据库中的读或写,Redis是单线程的。
你的情况下最好的解决方案是什么?谁知道呢,它可能取决于许多变量,每个用例都应该分开分析,以实现正确的解决方案。
如果应用程序层出了问题,除非您想破坏您的数据,否则就无法避免Redis MULTI。实际上,如果您想避免向Redis发出许多请求,则应该使用https://redis.io/commands/eval。
另一方面,Redis的要点是尝试进行许多操作,但要确保这些操作尽可能小,因为Redis是单线程性质的。是的,它烧得很快,除非你执行一项花费了太多时间的手术。
总之,我不会太担心将许多请求作为内存中的数据库发送,并以光速工作。此外,考虑https://redis.io/topics/cluster-tutorial (即分片)的奇妙之处,以便能够优化您的场景。
最后,我想看看这个Redis教程:Redis延迟问题疑难解答
发布于 2017-03-14 13:15:09
您应该将Lua脚本添加到您的选项列表中。见埃瓦尔。
另外,考虑一下您将要使用的数据结构。例如,您可以使用MSET在Redis中用一跳发送多个值。
https://stackoverflow.com/questions/42731347
复制相似问题