ToB企服应用市场:ToB评测及商务社交产业平台
标题:
使用redis pipeline提升性能
[打印本页]
作者:
嚴華
时间:
2023-8-30 23:58
标题:
使用redis pipeline提升性能
前言
本篇来介绍一下redis pipeline,主要是由于最近一次在帮开发同学review代码的时候,发现对redis有个循环操作可以优化。场景大概是这样的,根据某个uid要从redis查询一批数据,每次大概1000个key左右,如果查得到就返回,否则查db,然后写回缓存。由于每次要查的key比较多,虽然redis单次查询很快,但如果key很多,每次查询redis都需要读写socket,与client间的网络数据传输,都需要消耗时间,累加起来也会变得非常慢。开发同学决定使用批量的方式,例如每次操作100个key,使用RedisTemplate批量查询代码如下:
redisTemplate.opsForValue().multiGet(keys);
复制代码
如果查询到的是null,则表示缓存不存在或过期,则查询数据库,再批量写回redis,伪代码如下:
for (Long id : list) {
operations.opsForValue().set("key", id, 30, TimeUnit.MINUTES);
}
复制代码
他并没有使用批量的方式,如果有100个,这里就需要执行100次set命令,经过了解后原因是批量写入并不能设置过期时间,我们看它的api确实只能设置key-value,但没有过期时间也是不行的。
[code]void multiSet(Map
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4