`

使用memcache应该注意的问题

阅读更多

Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon)是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。

项目后台系统做权限管理,菜单每次都是动态生成,为了加快访问速度,我将每次查出来的菜单map放入memcached中,但是奇怪的是通过断点我发现每次刷新还是查的数据库,通过仔细排查,我发现每次memcached写入都失败,我写死一个值,就没有问题,于是我就想肯定是我要写入的东西出了问题。

写入的东西是这个,请看代码:

if (result ==null) {

result = invocation.proceed();

this.memCache.put(cacheKey,result, time);

}

简单解释一下,每次判断result是否为null,如果null,则执行invocation.proceed(),等同于正常调用,相当于走如下方法:

public Map<Menu,List<Menu>> getMenuMapByRoleId(Integer roleId) {

Map<Menu, List<Menu>> map=newLinkedHashMap<Menu, List<Menu>>() ;

List<Menu> list=menuDAO.getMenuListByRoleId(roleId,0);

for(Menu menu:list){

List<Menu> secondMenuList=menuDAO.getMenuListByRoleId(roleId,menu.getId());

map.put(menu, secondMenuList);

}

return map;

}

其实每次放入memcached中的值是Map<Menu,List<Menu>>,这个东西为什么每次都写入失败,经过排查,才发现memcached

中写入的数据必须是可序列化的,而Menu实体我却忘记实现了Serializable接口,所以每次会写入失败。

分享到:
评论

相关推荐

    asp memcache 解决缓存问题

    使用 ASP Memcache 解决缓存问题有以下几个主要步骤: 1. **安装 Memcached**:首先,你需要在服务器上安装 Memcached。这通常可以通过下载源代码编译或者使用预编译的二进制包完成。安装完成后,启动 Memcached ...

    memcache1.2.1 for windows

    Memcache是一个广泛使用的开源高性能分布式内存对象缓存系统,它能够通过在内存中存储数据来减少对数据库的访问,从而提高Web应用的性能。 描述中的"windows下memcache安装包 附带php扩展包"揭示了这个压缩包不仅...

    PHP 5.4 使用的 memcache

    不过需要注意的是,Memcache不提供数据持久化,一旦服务重启,所有缓存数据都会丢失,因此不适合存储关键业务数据。在实际应用中,可以结合其他存储方案,如Redis,以获得更全面的缓存解决方案。

    memcache使用手册

    在使用 Memcache API 时,需要注意以下几点: * Memcache 中的键可以是字符串或(哈希值、字符串)格式的元组,其中哈希值(通常用于分片为 Memcache 实例)会被忽略。 * Memcache 中的值可以是任何类型的数据,但...

    Windows Memcache 安装 .net 使用实例及动态库

    在IT行业中,内存缓存系统如Memcached是提高应用程序性能的关键工具,特别是在处理大量数据时。...在实际开发过程中,还需要注意版本兼容性、安全性以及性能优化等方面的问题,确保系统的稳定和高效运行。

    memcache使用

    值得注意的是,当内存达到最大值且`-M`选项设置为启用时,Memcache不会自动删除旧数据,而是拒绝新数据的写入。若希望在内存不足时自动删除旧条目,需移除`-M`选项。 此外,Memcache可以与其他缓存系统(如Redis)...

    PHP7.x 8.0 memcache dll php_memcache.dll

    7. **安全性**:使用memcache时要注意数据安全性,因为缓存的数据通常是以明文形式存储的,避免存储敏感信息。 8. **监控与调试**:可以通过memcached自带的管理工具或者第三方工具监控memcached服务器的性能,如`...

    php5.3的memcache

    **PHP5.3与Memcache** 在Web开发领域,PHP是一种广泛应用的服务器端脚本语言,而Memcache则是一款高效、分布式的内存对象缓存系统。...但同时,也需要注意其局限性和潜在的问题,以便在实际使用中做出最佳决策。

    PHP memcache 多版本拓展

    - **错误处理**: 在使用Memcache时,应检查每次操作的返回值,及时处理可能出现的连接问题或数据存储异常。 通过以上介绍,我们可以了解到PHP Memcache多版本拓展库在PHP7及更高版本中的应用和配置方法。它不仅提供...

    windows本地开启memcache服务

    Memcache是一种广泛使用的分布式内存缓存系统,常用于减轻数据库负载,提高Web应用的性能。在Windows环境下,虽然不如在Linux环境下常见,但依然可以通过一些步骤来安装和启动本地的Memcache服务。以下是对如何在...

    memcache 5.3.3

    但需要注意,因为数据不持久化,一旦 Memcache 服务重启,所有缓存数据将丢失,因此不适合存储需要长期保留的重要数据。 8. **优化技巧** - 适当调整 Memcache 的最大连接数、内存分配等参数,以适应服务器资源和...

    memcache共享session用到的jar

    使用这个包可以避免因版本不兼容导致的问题,直接集成到项目中即可开始使用Memcache进行session共享。 在实际部署时,还需要考虑以下因素: 1. **Memcache服务器的配置**:确保Memcache服务器已正确安装并运行,且...

    php5.3.5下可以使用的php_memcache.dll

    不过要注意,Memcache不支持数据持久化,一旦服务器重启,所有缓存数据将丢失。若需要持久化的缓存解决方案,可以考虑使用Memcached或Redis等其他缓存系统。 总的来说,`php5.3.5下可以使用的php_memcache.dll`是...

    memcache配置源代码

    根据提供的文件信息,本文将详细解释与memcache配置相关的知识点,包括如何在PHP环境中使用memcache进行缓存操作,以及具体实现过程中的注意事项。 ### Memcache简介 Memcache是一种高性能、分布式内存对象缓存...

    memcache win7 64位 安装文件

    **Memcache** 是一款高效的分布式内存对象缓存系统,它被...需要注意的是,由于Memcache数据不持久化,所以不适合存储重要或需要长期保存的信息。在实际应用中,结合持久化存储方案,如数据库,可以构建更健壮的系统。

    Ubuntu下安装memcache

    在实际部署时,需要注意的是,安装过程中可能会出现一些依赖问题或者编译错误,这个时候应该仔细阅读错误信息并根据提示进行相应的解决。常见的解决方法包括安装遗漏的依赖库、调整编译参数、清理之前的编译环境等。...

    window-php7.1-memcache-dll

    而"readme.txt"文件通常包含安装和使用扩展的指南,可能包括注意事项、依赖项以及可能出现的问题及解决方案。 总的来说,这个压缩包提供了一种在64位Windows系统上运行PHP 7.1及其以上版本时,启用Memcache缓存功能...

    windows xp 下memcache拓展的安装

    在Windows XP操作系统中,安装和使用Memcache拓展对于开发者来说是一项必要的任务,特别是在处理大量数据缓存时。Memcache是一个高性能的分布式内存对象缓存系统,它可以用来减轻数据库的负载,提高应用程序的运行...

Global site tag (gtag.js) - Google Analytics