Redis 의 간단 한 응용
10329 단어 ------【Redis】데이터베이스 와 캐 시
1. Redis 시작 (이전 블 로그 참조)
1. 컴퓨터 버 전의 시작 명령 은. / redis - server 또는. / redis - server redis. conf (/ usr / local / redis / 에서 실행) 를 사용 할 수 있 습 니 다.
2. 클 러 스 터 버 전의 시작 명령 사용. / start - all. sh (usr / local / redis - cluster / 아래)
2. 설정 파일 관리 사용 방법 을 사용 하지 않 음
1. 단기 판 테스트
//
@Test
public void testJedisSingle() throws Exception{
// jedis
Jedis jedis = new Jedis("192.168.159.219",6379);
jedis.set("test","hello jedis");
String string = jedis.get("test");
System.out.println(string);
jedis.close();
}
하지만 이렇게 하면 귀 찮 습 니 다. 매번 사용 할 때마다 new Jedis 대상 이 필요 하기 때문에 최적화 하고 연결 풀 을 사용 합 니 다.
// :
@Test
public void testJedisPool() throws Exception{
//
//
JedisPool jedisPool = new JedisPool("192.168.159.219",6379);
//
Jedis jedis = jedisPool.getResource();
String result = jedis.get("test");
System.out.println(result);
//jedis
jedis.close();
// ,
jedisPool.close();
}
2. 클 러 스 터 테스트
// redis
@Test
public void testJedisCluster() throws Exception{
// JedisCluster
Set nodes = new HashSet<>();
nodes.add(new HostAndPort("192.168.159.219",7001));
nodes.add(new HostAndPort("192.168.159.219",7002));
nodes.add(new HostAndPort("192.168.159.219",7003));
nodes.add(new HostAndPort("192.168.159.219",7004));
nodes.add(new HostAndPort("192.168.159.219",7005));
nodes.add(new HostAndPort("192.168.159.219",7006));
// nodes
//JedisCluster
JedisCluster jedisCluster = new JedisCluster(nodes);
jedisCluster.set("name","zhangsan");
jedisCluster.set("value","100");
String name = jedisCluster.get("name");
String value = jedisCluster.get("value");
System.out.println(name);
System.out.println(value);
//
jedisCluster.close();
}
한 걸음 한 걸음 최적화 되 었 지만 우리 가 사용 할 때 매번 연결 항목 을 설정 해 야 합 니 다. 219 기계 가 고장 나 면 우 리 는 Redis 를 사용 하 는 모든 곳 에서 host 의 값 을 수정 해 야 합 니 다. 해결 방법 은 Spring 의 설정 파일 을 통 해 관리 하 는 것 입 니 다.
3. 프로필 관리 사용 방법
우 리 는 Redis 의 사용 방법 을 봉인 하 는데 과정 은 다음 과 같다.
1. Redis 의 인터페이스 클래스 (JedisClient 이름)
import com.sun.tools.corba.se.idl.StringGen;
/**
*
* @author huan
* @date 2017/11/11
*/
public interface JedisClient {
public String set(String key,String value);
public String get(String key);
public Long hset(String key,String item,String value);
public String hget(String key,String item);
public Long incr(String key);
public Long decr(String key);
public Long expire(String key,int second);
public Long ttl(String key);
}
2. Redis 의 단일 버 전 구현 클래스 (JedisClient Single)
import com.taotao.rest.component.JedisClient;
import org.springframework.beans.factory.annotation.Autowired;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
/**
*redis
* @author huan
* @date 2017/11/11
*/
public class JedisClientSingle implements JedisClient {
@Autowired
private JedisPool jedisPool;
@Override
public String set(String key, String value) {
Jedis jedis = jedisPool.getResource();
String result = jedis.set(key,value);
jedis.close();
return result;
}
@Override
public String get(String key) {
Jedis jedis = jedisPool.getResource();
String result = jedis.get(key);
jedis.close();
return result;
}
@Override
public Long hset(String key, String item, String value) {
Jedis jedis = jedisPool.getResource();
Long result = jedis.hset(key,item,value);
jedis.close();
return result;
}
@Override
public String hget(String key, String item) {
Jedis jedis = jedisPool.getResource();
String result = jedis.hget(key,item);
jedis.close();
return result;
}
@Override
public Long incr(String key) {
Jedis jedis = jedisPool.getResource();
Long result = jedis.incr(key);
jedis.close();
return result;
}
@Override
public Long decr(String key) {
Jedis jedis = jedisPool.getResource();
Long result = jedis.decr(key);
jedis.close();
return result;
}
@Override
public Long expire(String key, int second) {
Jedis jedis = jedisPool.getResource();
Long result = jedis.expire(key,second);
jedis.close();
return result;
}
@Override
public Long ttl(String key) {
Jedis jedis = jedisPool.getResource();
Long result = jedis.ttl(key);
jedis.close();
return result;
}
}
3. Redis 클 러 스 터 구현 클래스 (JedisClient Cluster)
import com.taotao.rest.component.JedisClient;
import org.springframework.beans.factory.annotation.Autowired;
import redis.clients.jedis.JedisCluster;
/**
*redis
* @author huan
* @date 2017/11/11
*/
public class JedisClientCluster implements JedisClient{
@Autowired
private JedisCluster jedisCluster;
@Override
public String set(String key, String value) {
return jedisCluster.set(key,value);
}
@Override
public String get(String key) {
return jedisCluster.get(key);
}
@Override
public Long hset(String key, String item, String value) {
return null;
}
@Override
public String hget(String key, String item) {
return jedisCluster.hget(key,item);
}
@Override
public Long incr(String key) {
return jedisCluster.incr(key);
}
@Override
public Long decr(String key) {
return jedisCluster.decr(key);
}
@Override
public Long expire(String key, int second) {
return expire(key,second);
}
@Override
public Long ttl(String key) {
return ttl(key);
}
}
4. Spring 프로필 에 Redis 설정
(저 희 는 일반적으로 Redis 를 사용 하 는 것 은 데이터 뱅 크 의 압력 을 줄 이기 위해 서 입 니 다. 그래서 보통 Service 층 에 사용 합 니 다) 저 희 는 Service 층 의 spring 프로필 에 Redis 를 설정 합 니 다.
단일 컴퓨터 설정:
!-- redis -->
클 러 스 터 설정:
메모: 단일 판 과 클 러 스 터 판 은 동시에 설정 할 수 없고 하나만 선택 할 수 있 습 니 다.
5. 단기 판 과 클 러 스 터 판 의 테스트 방법
이상 의 설정 이 완 료 된 후에 우 리 는 테스트 방법 을 써 서 설정 파일 관리의 사용 방법 을 테스트 합 니 다. Spring 의 설정 파일 에 상기 클 러 스 터 판 이나 단기 판 중 하 나 를 설정 한 후에 다음 과 같은 방법 으로 테스트 할 수 있 습 니 다.
// spring Redis
@Test
public void testJedisClientSpring() throws Exception{
// spring
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-*.xml");
// JedisClient
JedisClient jedisClient = applicationContext.getBean(JedisClient.class);
//jedisClient redis
jedisClient.set("client1","1000");
String string = jedisClient.get("client1");
System.out.println(string);
}
총결산
이로써 우리 레 디 스 의 단기 판 과 클 러 스 터 판 도구 류 는 테스트 류 와 유사 하 게 작성 되 었 다.