在MySQL中,我可以这样做:
-- post_id-user_id is unique pair
INSERT INTO userviews(post_id, user_id, view_count) 
VALUES(1,1,1),(2,1,1),(3,1,1),(4,1,1)
ON DUPLICATE KEY UPDATE 
view_count = view_count + 1;或者在PostgreSQL中:
INSERT INTO userviews(post_id, user_id, view_count)
VALUES(1,1,1),(2,1,1),(3,1,1),(4,1,1)
ON CONFLICT DO UPDATE SET view_count = view_count + 1;如何在Tarantool中做这样的事情?(目前我正在使用Tarantool的库在循环中进行upsert ):
import "github.com/tarantool/go-tarantool"
type AX []interface{}
...
for ... {
   conn.Upsert(`userviews`, tuple, AX{AX{`+`,viewCountColumn, 1}})
}发布于 2021-06-22 02:35:51
我猜你要解决的问题是关于性能的。朴素的变体(执行一个操作,等待响应,继续下一个操作)将最多提供大约(1 /网络RTT) RPS :对于1ms RTT,它大约是1000RPS。
有以下选项:
,从版本2开始就可以使用它。)
你也可以在服务器端不使用函数的情况下使用'eval‘操作,但它需要’server‘上的'execute’权限,因此通常不鼓励使用(除了测试和实验目的)。
https://stackoverflow.com/questions/68069443
复制相似问题