redis 와 spring 통합 사용 절차 인 스 턴 스 튜 토리 얼

5399 단어 redisspring통합
머리말
대형 소프트웨어 시스템 을 해 본 학생 들 은 시스템 데이터 가 점점 커지 고 복잡 해 지면 서 가 져 온 문 제 는 시스템 성능 이 점점 떨 어 지 는 것 이다.특히 데이터 베 이 스 를 자주 조작 하면 서 가 져 온 성능 손실 이 더욱 심각 하 다 는 것 을 알 고 있다.많은 실적 의 큰 소 들 이 이 를 위해 많은 해결 방안 을 제시 하고 많은 프레임 워 크 를 개발 하여 이러한 빈번 한 데이터 베 이 스 를 조작 하 는 데 가 져 온 성능 손실 을 최적화 시 켰 다.그 중에서 특히 두 개의 캐 시 서버 는 Memcached 와 Redis 이다.오늘 은 Memcached 와 Redis 자 체 를 이야기 하지 않 겠 습 니 다.스프링 과 Redis 의 통합 사용 에 관 한 내용 을 소개 합 니 다.다음은 더 이상 말씀 드 리 지 않 겠 습 니 다.상세 한 소 개 를 해 보 겠 습 니 다.
방법 은 아래 와 같다.
첫 번 째,프로젝트 에 redis 의 pom 코드 를 추가 합 니 다:

<dependency>
 <groupId>redis.clients</groupId>
 <artifactId>jedis</artifactId>
 <version>2.6.0</version>
 </dependency>
두 번 째 단계,spring 에 redis 프로필 불 러 오기:applicationContext-redis.xml,내용 은 다음 과 같 습 니 다.

<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
 <property name="maxTotal" value="${redis.maxTotal}" />
</bean>
 
 <bean class="redis.clients.jedis.ShardedJedisPool">
 <constructor-arg index="0" ref="poolConfig" />
 <constructor-arg index="1">
  <list>
  <bean class="redis.clients.jedis.JedisShardInfo">
   <constructor-arg index="0" value="${redis.node1.host}" />
   <constructor-arg index="1" value="${redis.node1.port}" />
  </bean>
  </list>
 </constructor-arg>
 </bean>
</beans>
세 번 째 단 계 는 redis 서버 를 연결 하 는 속성 파일 을 작성 합 니 다:redis.properties

redis.maxTotal=100
redis.node1.host=127.0.0.1
redis.node1.port=6379
네 번 째 단 계 는 redis 와 관련 된 조작 방법 류,Function 류 와 RedisService 류 를 작성 합 니 다.
Funcrion 클래스:

package xx.service;
/**
 *            
 * @author yeying
 *<p>Description:</p>
 *<p>Company:</p>
 * @date:2017 12 5    9:02:44
 */
public interface Function<T,E> {
 public T callback(E e);
}
RedisService 클래스:

package com.taotao.common.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;

/**
 * redis     
 * @author yeying
 *<p>Description:</p>
 *<p>Company:</p>
 * @date:2017 12 3    2:11:47
 */
@Service
public class RedisService {

 @Autowired(required=false) //       
 private ShardedJedisPool shardedJedisPool;

 private <T> T execute(Function<T, ShardedJedis> fun){
 ShardedJedis shardedJedis = null;
 try {
  //         jedis    
  shardedJedis = shardedJedisPool.getResource();
  //  redis     
  return fun.callback(shardedJedis);
 } catch (Exception e) {
  e.printStackTrace();
 } finally {
  if (null != shardedJedis) {
  //   ,        ,          ,       
  shardedJedis.close();
  }
 }
 return null;
 }

 /**
 *   set  
 * @param key
 * @param value
 * @return
 */
 public String set(final String key,final String value){
 return this.execute(new Function<String, ShardedJedis>() {
  @Override
  public String callback(ShardedJedis e) {
  return e.set(key, value);
  }
 });
 }

 /**
 *   set  ,       ,    
 * @param key
 * @param value
 * @param seconds
 * @return
 */
 public String set(final String key,final String value,final Integer seconds){
 return this.execute(new Function<String, ShardedJedis>() {
  @Override
  public String callback(ShardedJedis e) {
  String str =e.set(key, value);
  e.expire(key, seconds);
  return str;
  }
 });
 }

 /**
 *   get  
 * @param key
 * @return
 */
 public String get(final String key){
 return this.execute(new Function<String, ShardedJedis>() {
  @Override
  public String callback(ShardedJedis e) {
  return e.get(key);
  }
 });
 }

 /**
 *   set  
 * @param key
 * @return
 */
 public Long del(final String key){
 return this.execute(new Function<Long, ShardedJedis>() {
  @Override
  public Long callback(ShardedJedis e) {
  return e.del(key);
  }
 });
 }

 /**
 *       ,    
 * @param key
 * @param seconds
 * @return
 */
 public Long expire(final String key, final Integer seconds) {
 return this.execute(new Function<Long, ShardedJedis>() {
  @Override
  public Long callback(ShardedJedis e) {
  return e.expire(key, seconds);
  }
 });
 }
}
다섯 번 째 단계,redis 서비스 시작,redis-server.exe,더 블 클릭 으로 열기:

총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기