[JShop]开源电子商务系统jshop的系统缓存实现

阅读更多

前言

jeeshop中通过SystemManager管理了大量的缓存数据,来提升系统的性能,但这些缓存数据全部都是存放于内存中的,无法满足特定场景的数据更新(如集群环境)。JShop对jeeshop的缓存机制进行了扩展,提供CacheProvider来辅助SystemManager管理这些缓存数据,通过CacheProvider,可以把缓存存放在内存,ehcache,redis,memcached等各种不同的容器中,从而实现高度可定制的缓存管理机制。

CacheProvider

JShop中提供了三种不同类型的CacheProvider,分别为SimpleCacheProvider,EhcacheCacheProviderRedisCacheProvider, 分别使用内存,ehcache和redis来管理缓存数据. 开发者可以方便地定制自己的CacheProvider,来实现对缓存的管理。

CacheProvider接口定义

public interface CacheProvider {
    /**
     * 放入cache中
     * @param key
     * @param cacheObject
     */
    public void put(String key, Serializable cacheObject);

    /**
     * 获取放在cache中的内容
     * @param key
     * @return
     */
    public Serializable get(String key);

    /**
     * 清除cache中对应的值
     * @param key
     */
    public void remove(String key);

    /**
     * 清除所有的cache
     */
    public void clear();
}

CacheProvider与SystemManager配置

Jshop的缓存机制配置位于spring/applicationContext-cache.xml, 缓存配置示例如下:

    
        
    

    
        
        
    

SimpleCacheProvider

SimpleCacheProvider内部通过Map来将所有缓存数据存放在内存中,所以相对简单,并会占用较多的内存资源,可以在一般的小型应用中使用,它的使用不需要其他的配置信息,只需要在配置文件中注入到systemManager即可,如:

    
        
    

    
    

EhcacheCacheProvider

EhcacheCacheProvider通过ehcache管理缓存数据,使用它需要提供两个属性: configLocation: ehcache配置文件路径 cacheName : 所用的Cache名称(这里需要配置cache为永不过期,即eternal=true) 示例:

    
        
        
    

RedisCacheProvider

EhcacheCacheProvider通过redis管理缓存数据,使用它需要提供Redis相关的配置信息,如数据源,连接池等。 相关的配置位于conf.properties,如下:

##redis配置##
redis.ip=localhost
redis.port=6379
redis.password=
redis.pool.maxIdle=200
redis.pool.testOnBorrow=true

完整的spring配置信息如下:

    
        
    

    
        
        
        
        
    
    
        
    
    
        
        
        
        
    
 本文wiki链接: http://git.oschina.net/dinguangx/jshop/wikis/Jshop%E7%9A%84%E7%B3%BB%E7%BB%9F%E7%BC%93%E5%AD%98%E5%AE%9E%E7%8E%B0

你可能感兴趣的:(jshop,电子商务)