SSM 1 단계 구덩이:Spring+Redis-Christer 배치 Redis 군집@Cacheable 주석

Spring+Redis 클 러 스 터 배치 방안
제 가 사용 하 는 버 전과 같 으 면 여러 가지 오류 가 발생 할 수 있 습 니 다.
spring-*:4.2.8    redis-data-redis:1.8.1    redis.clients:2.9.0  commons-pool2:2.4.3
불 러 온 프로필(부분)

		
			redis.clients
			jedis
			2.9.0
		
		
			org.springframework.data
			spring-data-redis
			1.8.1.RELEASE
		
		
			org.apache.commons
			commons-pool2
			2.4.3
		

redis-spring.xml 는 웹.xml 에 불 러 와 야 합 니 다.



    
   
        
            
                classpath:redis.properties
            
        
         
    


     
          
         
        
          
        
          
        
        
        
    
    

    
        
        
            
                
                    
                    
                
                
                    
                    
                
                
                    
                    
                
                
                    
                    
                
                
                    
                    
                
                
                    
                    
                
            
        
    

    
    
     
     
           
        
                
    
      
    
    
     
          
    
        
        
        
        
        
    
    
     
      
      
      
        
          
        
        
        
        
        
         
                
    
    
    
    
         
             
                
                  
                    
                       
                      
                                            
                 
                 
                
             
         
      
       
   
    
     

redis.properties

##########################
## redis    
##########################

# redis  IP
redis.master.ip=127.0.0.1
# redis  
redis.master.port=9001
#   
#redis.pass=123456

##########################
## redis     
##########################
#        
redis.pool.maxIdle=200
#      
redis.pool.maxTotal=1024
#           
redis.pool.maxWaitMillis=1000
#           
redis.pool.testOnBorrow=true
redis.pool.testOnReturn=true

redis-spring.xml 에 불 러 온 인터페이스 com.song.redis.RedisCache 는 RedisTemple 재 작성 방법 을 사용 합 니 다.

package com.song.redis;

/**   
* Copyright: Copyright (c) 2019 LanRu-Caifu
* 
* @ClassName: RedisCache.java
* @Description:        
*
* @version: v1.0.0
* @author: dongsong
* @date: 2019 7 12    6:56:33 
*
* Modification History:
* Date         Author          Version            Description
*---------------------------------------------------------*
* 2019 7 12      dongsong           v1.0.0                   
*/


import java.io.Serializable;

import org.apache.commons.lang3.SerializationUtils;
import org.springframework.cache.Cache;
import org.springframework.cache.support.SimpleValueWrapper;
import org.springframework.dao.DataAccessException;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.core.RedisCallback;
import org.springframework.data.redis.core.RedisTemplate;

public class RedisCache implements Cache {

    private RedisTemplate redisTemplate;
    private String name;

    @Override
    public void clear() {
        System.out.println("-------    ------");
        redisTemplate.execute(new RedisCallback() {
            @Override
            public String doInRedis(RedisConnection connection) throws DataAccessException {
                connection.flushDb();
                return "ok";
            }
        });
    }

    @Override
    public void evict(Object key) {
        System.out.println("-------    ------");
        final String keyf=key.toString();
        redisTemplate.execute(new RedisCallback() {
            @Override
            public Long doInRedis(RedisConnection connection) throws DataAccessException {
                return connection.del(keyf.getBytes());
            }
            
        });

    }

    @Override
    public ValueWrapper get(Object key) {
        System.out.println("------    -------"+key.toString());
        final String keyf = key.toString();
        Object object = null;
        object = redisTemplate.execute(new RedisCallback() {
            @Override
            public Object doInRedis(RedisConnection connection) throws DataAccessException {
                byte[] key = keyf.getBytes();
                byte[] value = connection.get(key);
                if (value == null) {
                    System.out.println("------     -------");
                    return null;
                }
                return SerializationUtils.deserialize(value);
            }
        });
        ValueWrapper obj=(object != null ? new SimpleValueWrapper(object) : null);
        System.out.println("------     -------"+obj);
        return  obj;
    }

    @Override
    public void put(Object key, Object value) {
        System.out.println("-------    ------");
        System.out.println("key----:"+key);
        System.out.println("key----:"+value);
        final String keyString = key.toString();
        final Object valuef = value;
        final long liveTime = 86400;
        redisTemplate.execute(new RedisCallback() {
            @Override
            public Long doInRedis(RedisConnection connection) throws DataAccessException {
                byte[] keyb = keyString.getBytes();
                byte[] valueb = SerializationUtils.serialize((Serializable) valuef);
                connection.set(keyb, valueb);
                if (liveTime > 0) {
                    connection.expire(keyb, liveTime);
                }
                return 1L;
            }
        });

    }
    
    @Override
    public  T get(Object arg0, Class arg1) {
        // TODO Auto-generated method stub
        return null;
    }
    
    @Override
    public String getName() {
        return this.name;
    }

    @Override
    public Object getNativeCache() {
        return this.redisTemplate;
    }
    
    @Override
    public ValueWrapper putIfAbsent(Object arg0, Object arg1) {
        // TODO Auto-generated method stub
        return null;
    }

    public RedisTemplate getRedisTemplate() {
        return redisTemplate;
    }

    public void setRedisTemplate(RedisTemplate redisTemplate) {
        this.redisTemplate = redisTemplate;
    }

    public void setName(String name) {
        this.name = name;
    }
}

사용 방법:
데 이 터 를 redis 에 추가 하 는 방법 에@Cacheable(CacheNames="content",key="**")을 더 해 야 합 니 다.사용 하 는 key 는 EL/spEL 규칙 에 부합 해 야 합 니 다.다른 cacheNames 의 값 은 redis-spring.xml 에 설정 되 어 있 습 니 다.
예시
@Override
	@Cacheable(cacheNames="content",key="'adminlog'")
	public List selectall() {
		// TODO Auto-generated method stub
		return adminlogmapper.selectlist();
	}

좋은 웹페이지 즐겨찾기