(1) pom.xml은 다음과 같이 JAR 패키지를 소개합니다.
<pectionency> <groupId> org.springframework.boot </groupid> <artifactid> 스프링 부트 스타터-데이터-레 디스 </artifactid> </fectionency>
(2) 프로젝트 시작 클래스를 수정하고 주석을 추가하고 다음과 같이 캐싱 기능을 활성화하십시오.
패키지 SpringBoot; import org.springframework.boot.springApplication; import org.springframework.boot.autoconfigure.springbootapplication; import org.springframework.cache.annotation.enablecaching; import org.springframework.scheduling.annotation.enablesecheduling;@springbootapplication@enablescheduling@enablecachingpublic class springbootApplication {public static void main (string [] args) {springApplication.run (springbootapplascation, classs); }}(3) Application.properties에서 Redis 연결 정보를 구성하십시오.
# redis database index (기본값은 0) spring.redis.database = 0# redis server address spring.redis.Redis.Redis.Redis.Redis = 172.31.19.222# redis server connection port spring.port = 6379# redis 서버 연결 암호 (기본값이 비어 있음) spring.redis.password =# 연결 풀에 대한 최대 숫자 수는 제한되지 않음). spring.redis.pool.max-active = 8# 연결 풀에 대한 최대 차단 시간 (음수 값을 사용하는 대기 시간) 스프링.
(4) 다음과 같이 새로운 Redis 캐시 구성 클래스 RedisconFig를 만듭니다.
패키지 springboot.config; import org.springframework.bean.bean.beans.annotation.value; import org.springframework.cache.cachemanager; import org.springframework.cache.annotation.cachingconfigureersupport; import org.springframework.cache.annotation.enablecaching; org.springframework.context.annotation.bean; import org.springframework.context.annotation.configuration; import org.sprameframework.data.redis.rediscachemanager; import org.spramework.data.redis.connection.redisconnection.redisconnectionforcory; import org.springframework.data.redis.core.redistemplate; import org.springframework.data.redis.core.stringredistemplate; import org.springframework.data.redis.serializer.jackson2jsonredisserializer; import com.fasterxml.jackson.antodetect; com.fasterxml.jackson.annotation.propertyaccessor; import com.fasterxml.jackson.databind.objectmapper;/** * redis 캐시 구성 클래스 * @author szekinwin */@configuration@enablecachingpublic class readisconfig extends caching cachingconfport { @Value ( "$ {spring.redis.host}") 개인 문자열 호스트; @Value ( "$ {spring.redis.port}") 개인 int 포트; @Value ( "$ {spring.redis.timeout}") Private int timeout; // 커스텀 캐시 키 생성 전략 // @bean // public keygenerator keygenerator () {// new keyGenerator () {// @reportide // public 객체 생성 (개체 target, java.lang.reflect.method 메서드, 개체) {// stringbuffer sb = new StringBuffer (); // sb.append (target.getClass (). getName ()); // sb.append (method.getName ()); // for (object obj : params) {// sb.append (obj.toString ()); // return sb.toString (); //} //} //} //} //} //} //} //} //} //} //}. 캐시 관리자 @bean public cachemanager cachemanager (@suppresswarnings ( "rawtypes") redistemplate redistemplate) {readiscachemanager cachemanager = new readiscachemanager (redistemplate); // 캐시 만료 시간 설정 cacheManager.setDefaulteXpiration (10000); 반환 캐시미너; } @bean public redistemplate <string, string> redistemplate (readisconnectionFactory factory) {StringRedistemplate 템플릿 = new StringRedistemplate (Factory); setSerializer (템플릿); // 직렬화 도구 템플릿을 설정합니다. 리턴 템플릿; } private void setSerializer (StringRedistemplate 템플릿) {@suppresswarnings ({ "rawtypes", "unchecked"}) jackson2jsonredisserializer jackson2jsonredisserializer = new jackson2jsonredisserializer (objebs.class); ObjectMapper om = new ObjectMapper (); om.setvisability (propertyaccessor.all, jsonautodetect.visability.any); om.enabledefaulttyping (ObjectMapper.DefaultTyping.Non_Final); jackson2jsonredisserializer.setobjectmapper (om); template.setValueserializer (Jackson2jsonRedisserializer); }}(5) 다음과 같이 새 usermapper를 만듭니다.
패키지 springboot.dao; import org.apache.ibatis.annotations.delete; import org.apache.ibatis.annotations.insert; import org.apache.ibatis.annotations.mapper; import org.apache.ibatis.annotations.annotations.annotations.annotations.annotations.annotations.annotations.select; import; org.apache.ibatis.annotations.update; import org.springframework.cache.annotation.cacheconfig; import org.springframework.cache.annotation.cacheevict; import org.springframework.cache.annotation.cacheput; import org.springframework.cache.cache SpringBoot.domain.user;@mapper@cacheconfig (cachenames = "user") public interface usermapper {@insert ( "insert (name, age) value (#{name},#{age})") int Adduser (@param ( "name") 문자열 이름,@param ( "age"); @select ( "select * where id =#{id}") @cachable (key = "#p0") user findByid (@param ( "id") String ID); @cacheput (key = "#p0") @update ( "사용자 세트 이름 =#{name} 여기서 id =#{id}") void updateById (@param ( "id") 문자열 id,@param ( "name") 문자열 이름); // 메소드가 @CacheEvict (key = "#p0", allentries = true)라고 불린 직후에 모든 캐시가 지워집니다. @delete ( "id =#{id}") void deletebyid (@param ( "id") 문자열 ID);}@Cachable 캐시 쿼리 결과를 redis로 캐시합니다 (key = "#p0")는 Redis의 키로 전달 된 첫 번째 매개 변수를 지정합니다.
@cacheput, 키를 지정하고 업데이트 된 결과를 Redis와 동기화합니다.
@cacheevict, 키 지정, 캐시 데이터 삭제, allentries = true, 메소드가 호출 된 직후 캐시가 지워집니다.
(6) 서비스 계층 및 컨트롤러 계층은 이전 기사와 같이 통합됩니다. Redis 서버를 시작하십시오. Redis 서버의 설치 및 시작에 대한 이전 블로그를 참조 할 수 있습니다. 주소는 다음과 같습니다.
http://www.cnblogs.com/gdpuzxs/p/6623171.html
(7) 다음과 같이 로그 정보를 구성하십시오.
## log4j 구성 log4j.rootcategory = debug, stdout ## 콘솔 출력 log4j.appender.stdout = org.apache.log4j.consoleAppenderlog4j.appender.stdout.layout = org.apache.log4j.patternlayoutlog4j.appender.stdout.layout.conversionpattern = %d {yyyy-mm-dd hh : mm : sss} % %C {1} : %l- %m %n(8) Redis 캐시를 확인하십시오
먼저 데이터 조각을 사용자 테이블에 삽입하면 데이터베이스가 다음과 같이 표시됩니다.
이제 사용자 테이블에서 ID = 24로 데이터를 쿼리하겠습니다. Guanzi 콘솔의 정보 출력은 다음과 같습니다.
콘솔 출력 정보를 통해 이번에는 데이터베이스 쿼리가 실행되고 Redis 캐시 쿼리 결과가 활성화되어 있음을 알 수 있습니다. 다음으로 사용자 테이블에서 ID = 24로 데이터를 쿼리하고 다음과 같이 콘솔을 관찰합니다.
콘솔 출력 정보를 통해 이번에는 데이터베이스 쿼리를 실행하지 않고 대신 redis 캐시에서 쿼리하고 쿼리 결과를 반환한다는 것을 알 수 있습니다. 다음과 같이 Redis의 정보를 확인합니다.
Method FindUser 메소드는 @Cachable (key = "#p0")을 사용합니다. 이는 ID가 Redis의 키 값으로 사용됨을 의미합니다. 데이터를 업데이트하면 @CachePut (key = "#p0")을 사용하여 캐시 된 데이터를 업데이트해야합니다. 그렇지 않으면 더러운 데이터가 쿼리됩니다.
요약
위는 편집기가 소개 한 Redis 캐시를 사용하여 SpringBoot의 구현 방법입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 질문이 있으시면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다!