短鏈服務介面慢最佳化 redis應用

oktokeep發表於2024-05-22

短鏈服務介面慢最佳化 redis應用

短連結服務:
1.長連結 查詢 短連結(長連結如果存在,直接返回短連結,如果長連結不存在,則需要生成短連結),比如:在獲取簡訊之前,或者管理後臺編輯簡訊內容之前,需要根據長連結去獲取短連結的。
2.短連結 查詢 長連結,比如:在簡訊中點選短鏈,短鏈需要根據短鏈的Code去獲取長連結,然後redirect跳轉實現。

方案1:以上兩處的查詢,都需要考慮加上mongodb索引。可以將介面響應速度提高到毫秒內,之前需要2~3秒。
mongodb查詢語句:
db.shortUrlTestMongoDB.find({"long_url":"https://長連結地址?orderNo=DINGDANHAO&memNo=HUIYUANHAO"})
db.shortUrlTestMongoDB.find({"code":"123564"})

方案2:在服務呼叫方處,加上redis快取,可以理解為:每個訂單號對應的短鏈CODE是不變的,沒必要每次都是呼叫短鏈服務。
弊端:在首次呼叫初始化的時候會慢,其他的時候都是很快。

DEMO程式碼示例:

@Autowired
    private StringRedisTemplate stringRedisTemplate;
    
    String redisShortUrl = "redisKeyTest:orderNo:";
    //存入快取當中
    String redisKeyValue = stringRedisTemplate.opsForValue().get(redisShortUrl + orderNo);
    if (StringUtils.isEmpty(redisKeyValue)) {
        //呼叫短鏈服務獲取短鏈Code
        //返回該code,比如變數為:code,失效時間設定為30天
        stringRedisTemplate.opsForValue().set(redisShortUrl + orderNo, code, 30, TimeUnit.DAYS);
    } else {
        //直接返回redisKeyValue(即code)
        log.info("get from redis,redisKeyValue=[{}]",redisKeyValue);
    }

谷歌瀏覽器F12檢視介面的請求響應時間工具:開啟谷歌瀏覽器 >> F12

相關文章