我正在使用spring-cache来改善数据库查询,如下所示可以正常工作:
@Bean
public CacheManager cacheManager() {
return new ConcurrentMapCacheManager("books");
}
@Cacheable("books")
public Book getByIsbn(String isbn) {
return dao.findByIsbn(isbn);
}
但是现在我想在启动时预先填充完整的图书缓存。这意味着我要调用dao.findAll()
并将所有值放入缓存。该例程应仅定期进行安排。
但是在使用时如何显式填充缓存@Cacheable
?
像以前一样使用缓存,添加调度程序以更新缓存,下面是代码段。
@Service
public class CacheScheduler {
@Autowired
BookDao bookDao;
@Autowired
CacheManager cacheManager;
@PostConstruct
public void init() {
update();
scheduleUpdateAsync();
}
public void update() {
for (Book book : bookDao.findAll()) {
cacheManager.getCache("books").put(book.getIsbn(), book);
}
}
}
确保你KeyGenerator
将为一个参数返回对象(默认)。否则,请公开其中的putToCache
方法,BookService
以避免直接使用cacheManager。
@CachePut(value = "books", key = "#book.isbn")
public Book putToCache(Book book) {
return book;
}
我使用spring cache改进数据库查询,其工作原理如下: 但是现在我想在启动时预填充完整的图书缓存。这意味着我要调用并将所有值放入缓存。该例行程序不应仅定期安排。 但是,使用时,如何显式填充缓存?
我想在应用程序启动时使用Spring ehCache将数据从数据库加载到缓存中,即在调用任何其他方法之前服务器启动时。我不想使用构造函数。请帮帮我。
问题内容: 当Django启动时,如何从mysql数据库加载资源并将其放入内存(Redis)中,以供所有应用程序使用。 我已经看到了这个 [https://docs.djangoproject.com/en/dev/ref/applications/#django.apps.AppConfig.ready] 但是他们提到在ready函数中不使用db连接。我的网站启动时该怎么办? 我还可以在read
问题内容: 我希望IPython或Python解释器在启动它们时自动加载模块。 可能吗? 例如,当我启动IPython时: 在教程页面中可以找到类似SymPy的live shell的 东西。 问题答案: 检查文件-您可以列出要在启动时加载的所有模块。
问题内容: 我正在尝试从启动时自动加载模块,目前我在IPython启动库中有一个简单的脚本,其内容如下: 直接从外壳运行时可以正常工作,但是从脚本运行该行时,该模块似乎没有加载,我通过向其添加一些任意变量分配来确保已加载启动脚本: 并在启动IPython时(如预期的那样)预先分配了变量。 我试图在这里和这里寻找一些解决方案,但无处可寻,任何帮助将不胜感激,谢谢 问题答案: 我找到了一个解决方案,在