memcached使用

1、在pom中添加:

  
  
     com.google.code.simple-spring-memcached
       spring-cache
       3.6.0
   
   
       com.google.code.simple-spring-memcached
       xmemcached-provider
       3.6.0
   
    
        com.google.code.simple-spring-memcached
        spring-cache
        3.6.0
    

2、在Spring配置文件中添加:

  
  
      
      
      
          
              classpath*:application.properties
          
      
  
    
  

  
  
  
  
  
    
        
            
                
                
                
            
        
    
  
  
  
    
    
      
    
    
    
      
        
      
    
    
    
      
        
        
      
    
  

application.properties文件:

#memcache默认缓存地址
memcache.default.url=10.18.101.16\:11811

simplesm-context.xml文件:

  
  
	

	

	

	
		
	
	
		
	
	
		
	
	
		
	
	
		
	
	
		
	
	
		
	
	
		
	
	
		
	
	
		
	
	
		
	
	
		
	
	
		
	
  

3、配置完成,使用注解读写缓存:

public class UserDaoImpl implements IUserDao {  
    @Override  
    @ReadThroughSingleCache(namespace ="user", expiration = 3600)  //3600秒=1小时
    public User getById(@ParameterValueKeyProvider String userId) {  
        System.out.println(userId);  
        return users.get(userId);  
    }  
}

因为Memcached有独立的服务器端组件,是独立于应用系统的,从客户端(应用系统)保存对象到memcached是必须通过网络传输,而网络传入都是二进制数据,所以必须经过序列化,否则无法存储到Memcached服务器端的缓存中。这里的User必须是可序列化的,需实现Serializable接口。
4、key的生成规则
目前我们系统中有两个不同的Memcached服务器:
session memcached服务器:主要存储用户的session
app memcached服务器: 主要用于缓存应用数据
由于应用所有的缓存数据都放在app缓存上,为避免各应用的缓存数据出现冲突,必须规划好它们的命名空间。所幸Simple-Spring-Memcached支持namespace的概念,namespace在生成key时,将放在最前面。
Simple-Spring-Memcached提供的针对单个对象的注解接口提供了两种key生成方式。
1)、AssignCache类注解通过assignKey指定key。只要求必须保证key不与其它的冲突,且namesapce符合规则。
2)、SingleCache类注解通过ParameterValueKeyProvider注解指定生成key的方法。
@ParameterValueKeyProvider: 将方法的参数做为缓存key。
@CacheKeyMethod标注的对象有getCacheKey()方法,根据getCacheKey()方法生成缓存key。
多个方法参数都作为Key时,@ParameterValueKeyProvider必须指明其order值。
多个方法参数作为Key时,参数之间用 ‘/’ 号分隔。

总之,key由命名空间namespace加上@ParameterValueKeyProvider标注的参数值组成。如:

     步骤3中的key是user:${userId} (namespace:参数1/参数2)。
     如果userId等于12,则key等于:user:12

你可能感兴趣的:(Memcached)