第二次交易中的内存缓存滥用

时间:2020-06-09 09:17:45

标签: java spring caching redis hazelcast

我们在Java springboot中使用Hazelcast内存缓存。

我的同事滥用缓存,而且我不确定如何从设计角度说服管理层他错了。我根据自己的情况制作了一个示例。

BookApiController从前端获取值bookid。

bookdetails存储库需要bookid和isbn作为参数。我的同事不是从前端获取isbn的值,而是从先前的缓存事务中获取isbn的值。

这就是他的做法

//BookApiController
getBookDetails(string bookid) {
service.getBookDetails(bookid);
}

//BookApiService
getBookDetails(string bookid) {
books= cachedBooks()   <---- assume this will always be cached 1 min earlier in prev transaction
repo.getBookDetails(bookid, books[0].isbn)
}

@Cacheable(cacheNames = CacheConfig.Books, key= SIMPLE_CACHE_KEY, sync=true)
public cachedBooks()
{
//Lots of backend calls and heavy work here
}

我要说的是前端已经具有ISBN值,它可以将值传递给控制器​​而不是使用缓存,就像这样简单

//BooksApiController
getBookDetails(string bookid, string isbn) {
service.getBookDetails(bookid,isbn)
}

    //BookApiService
    getBookDetails(string bookid, string isbn) {
    repo.getBookDetails(bookid, isbn)
    }

他只是滥用缓存,并且他已经在多个地方这样做了。我们是否有与此相关的任何缓存设计准则?

0 个答案:

没有答案