- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我通过 SE.Redis 执行事务 (MULTI/EXEC) 时,它会多次访问服务器吗?例如,
ITransaction tran = Database.CreateTransaction();
tran.AddCondition(Condition.HashExists(cacheKey, oldKey));
HashEntry hashEntry = GetHashEntry(newKeyValuePair);
Task fieldDeleteTask = tran.HashDeleteAsync(cacheKey, oldKey);
Task hashSetTask = tran.HashSetAsync(cacheKey, new[] { hashEntry });
if (await tran.ExecuteAsync())
{
await fieldDeleteTask;
await hashSetTask;
}
ExecuteAsync
时一次性发送所有内容?
最佳答案
它必须发送多个命令,但不会为每个命令支付延迟成本;具体来说,当您调用 Execute[Async]
(而不是之前)它发出一个管道(全部在一起,不等待回复):
WATCH cacheKey // observes any competing changes to cacheKey
HEXIST cacheKey oldKey // see if the existing field exists
MULTI // starts the transacted commands
HDEL cacheKey oldKey // delete the existing field
HSET cachKey newField newValue // assign the new field
HEXIST
获取结果。 ,因为只有在知道了这一点时,它才能决定是否继续进行交易(发出
EXEC
并检查结果 - 如果
WATCH
检测到冲突,这可能是否定的),或者是否丢弃所有东西(
DISCARD
)。
EXEC
之前的决策点,您需要支付 2 次往返费用。/
DISCARD
.然而,在许多情况下,这本身可能会被
HEXIST
的结果这一现实进一步掩盖。在我们进行检查之前,可能已经在返回给您的路上,特别是如果您有任何重要的带宽,例如大的
newValue
.
MULTI
/
EXEC
: 可以通过使用 Lua 脚本来更快、更可靠且错误更少地完成。看起来我们实际上在这里尝试做的是:
for the hash
cacheKey
, if (and only if) the fieldoldField
exists: removeoldField
and setnewField
tonewValue
var success = (bool)await db.ScriptEvaluateAsync(@"
if redis.call('hdel', KEYS[1], ARGV[1]) == 1 then
redis.call('hset', KEYS[1], ARGV[2], ARGV[3])
return true
else
return false
end
", new RedisKey[] { cacheKey }, new RedisValue[] { oldField, newField, newValue });
HEXISTS
/
HDEL
更多 - 我们可以根据
HDEL
的结果做出决定.在幕后,图书馆执行
SCRIPT LOAD
根据需要进行操作,因此:如果您多次执行此操作,则无需多次通过网络发送脚本本身。
cacheKey
和两次
oldKey
)。
KEYS
与
ARGV
的注释:键和值之间的区别对于路由目的很重要,特别是在分片环境中,例如 redis-cluster;分片是基于键完成的,并且唯一的键这里是
cacheKey
;散列中的字段标识符不会影响分片,因此出于路由的目的,它们是值,而不是键 - 因此,您应该通过
ARGV
而不是
KEYS
来传递它们;这不会在
redis-server
上不会影响您,但在
redis-cluster
上这种差异非常重要,就好像您弄错了一样:服务器很可能会拒绝您的脚本,认为您正在尝试跨槽操作;多键
redis-cluster
上的命令仅在所有键都在同一个插槽上时才支持,通常通过“哈希标签”实现)
关于redis - StackExchange.Redis:事务是否多次命中服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62401901/
关于 APC 操作码缓存,什么是“命中与未命中”?我已经安装了 APC 并且它运行良好,但我有“一些”失误,我想知道这是否“不好”。此外,我正在运行 Openx,因此,我很快就会填满“缓存完整计数”。
我试过这个: def test_send_confirm_hit(monkeypatch): hit = False def called(): global hit
是否可以将找到的单词插入到替换中? $(function() { content = 'hallo mein name ist peter und ich komme aus berlin.
我有一个允许用户将文件上传到文件夹的网站。首先,我检查文件是否存在,如果存在,然后检查复选框的值以确定用户是否要覆盖现有文件。如果点击上传并且未选中该框,我会执行一个带有消息和后退按钮的 die()
我有多个不同的进程通过 IPC 进行通信,当使用 gdb 调试单个进程时,每当遇到断点时,我都会尝试向其他进程发送消息。有没有一种方法可以自动在遇到断点时自动调用一个函数/一段代码(NotifyAll
目前,通过管道传输到 jq 的 cat 命令帮助我解析工作目录中的多个 JSON 文件,并根据正则表达式模式匹配文件中所有可用的电子邮件 ID。但是,我很想识别正则表达式模式被命中/匹配的文件名 ca
我们希望将 podname 解析为 IP,以在 akka 集群中配置种子节点。这是通过在 Kubernetes 中使用 headless (headless)服务和有状态集的概念来实现的。但是,如何在
Maven 项目具有以下文件夹结构: src/main/java src/main/resources src/test/java src/test/resources 如果我们导航到 Maven 项
我只使用 c 几个星期,所以很可能会出现我忽略的明显错误。我看过其他线程,但我不明白我正在读的很多内容。该程序假设有一个无限大的牌组。 已知问题: clearBuffer 当前未使用,我正在尝试不同的
我已将我的 AdMob 代码实现到我的 XML 文件中,如下所示: 在我的 Activity 的 onCreate 方法中: // load ads
我的作业是通过示例程序确定给定跟踪文件的缓存读/写/未命中/命中次数。 举例来说,这是示例跟踪输出的前 10 行。 0x37c852: W 0xbfd4b18c 0x37cfe0: W 0xbfd
https://plnkr.co/edit/2h6fV5yTjeUqLP3SvbvO?p=preview 预期 登录后应用程序重定向到 $state container,其中包含 dashboard
ElasticSearch 独立于 from 和 size 参数,基于查询的所有命中构建聚合结果。在大多数情况下,这是我们想要的,但我有一个特殊情况,我需要将聚合限制为前 N 个命中。 limits
我使用 Intel PCM 进行细粒度的 CPU 测量。在我的代码中,我试图测量缓存效率。 基本上,我首先将一个小数组放入 L1 缓存(通过多次遍历),然后启动计时器,再遍历数组一次(希望使用缓存),
我在为 javascript 滑动元素定义点击区域时遇到问题。 参见示例: http://www.warface.co.uk/clients/warface.co.uk/ 请滑过右侧的灰色框以显示按钮
我正在尝试在 foldersystem 中使用 os.walk() 找到几个 'my_file.bat',如果文件名匹配它应该用 subprocess.call() 或 .run() 调用。问题是 o
我有一个端点,我可以在其中请求我使用 Siesta 查询的多条数据(例如 https://example.com/things?ids=1,2,3) .如果我只缓存了一些 things ,我试图弄清楚
这是我的代码: public static function test(){ try{ $apiContext = ApiContext::create(
我使用 PHP 在需要时传递登录表单,代码如下: $htmlForm = ''.''; switch(LOGIN_METHOD) { case 'both': $htmlFor
我正在使用 nginx-lua带有 redis 的模块提供 ember-app 的静态文件. index文件内容存储在redis作为 value由 nginx 正确提供服务当(根)domain/IP被
我是一名优秀的程序员,十分优秀!