近段时间重新复习memcached整合相关后端框架的内容,发现一个很纠结的问题,我使用clientTest的main函数测试memcached的存取情况,一切正常,所有对象都可以存取,但是我使用spring管理memcached配置信息后,前端请求直接访问数据库,memcached存取都没成功。这就尴尬了,纠结2天后,得到如下解决方法:

1.自定义对象需要实现Serializable接口,同时生成serialVersionUID,因为Memcached有独立的服务器端组件,是独立于应用系统的,从客户端(应用系统)保存对象到memcached是必须通过网络传输,而网络传入都是2进制数据,所以必须经过序列化,否则无法存储到Memcached服务器端的缓存中:

spring+memcached+mybatis整合,memcached使用main函数可以保存自定义对象,使用spring管理memcached配置后无法保存spring+memcached+mybatis整合,memcached使用main函数可以保存自定义对象,使用spring管理memcached配置后无法保存

2.新建CashHelper类,使用静态块的方式初始化memcached的配置:

spring+memcached+mybatis整合,memcached使用main函数可以保存自定义对象,使用spring管理memcached配置后无法保存spring+memcached+mybatis整合,memcached使用main函数可以保存自定义对象,使用spring管理memcached配置后无法保存

3.业务逻辑层直接调用此工具类来进行逻辑处理:

spring+memcached+mybatis整合,memcached使用main函数可以保存自定义对象,使用spring管理memcached配置后无法保存spring+memcached+mybatis整合,memcached使用main函数可以保存自定义对象,使用spring管理memcached配置后无法保存

此时还会遇到另外一个问题,当前端发送请求的时候,由于需要先访问memcached查看是否缓存数据,再决定是否访问数据库,这里就涉及连接等待的问题,可能会造成访问了memcached后数据库无法连接,这就是由于memcached的连接时间比mysql长,导致mysql连接失效,applicationcontext.xml的配置如下:

spring+memcached+mybatis整合,memcached使用main函数可以保存自定义对象,使用spring管理memcached配置后无法保存spring+memcached+mybatis整合,memcached使用main函数可以保存自定义对象,使用spring管理memcached配置后无法保存

至此,就顺利解决了memcached在业务逻辑中无法缓存自定义对象的问题。

相关文章:

  • 2018-07-27
  • 2019-08-27
  • 2020-05-22
  • 2019-06-14
  • 2021-05-15
  • 2021-08-05
  • 2021-09-07
  • 2018-11-21
猜你喜欢
  • 2018-01-10
  • 2018-06-05
  • 2021-08-30
  • 2017-12-07
  • 2018-03-07
  • 2020-01-05
  • 2018-08-29
  • 2019-02-27
相关资源
相似解决方案