jedis 연결 풀 사용 및 작은 사례

jedis 연결 풀 사용 및 작은 사례
jedis 의 사용
사용 한 maven 항목,의존 도 를 먼저 가 져 옵 니 다.
		<dependency>
            <groupId>redis.clientsgroupId>
            <artifactId>jedisartifactId>
            <version>2.9.0version>
        dependency>
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>4.12version>
        dependency>

jedis 호출 방법 명 은 redis 를 조작 하 는 명령 명 과 완전히 일치 합 니 다.코드 참조.
import redis.clients.jedis.Jedis;

public class JedisTest {
     
    public static void testJesdis(){
     
        //1.  redis
        Jedis jedis=new Jedis("127.0.0.1",6379);
        //2.  redis,jedis       redis       
        System.out.println(jedis.get("name"));
        jedis.set("name","if");
        System.out.println(jedis.get("name"));
        jedis.append("name"," is me");
        System.out.println(jedis.get("name"));
        jedis.del("name");
        System.out.println(jedis.get("name"));
        //3.    
        jedis.close();
    }

    public static void main(String[] args) {
     
        testJesdis();
    }
}

출력 결과
null if if is me null
jedis 연결 탱크 도구 클래스
properties 파일 을 호출 했 기 때문에 resource 폴 더 에 redis.properties 파일 을 만 들 수 있 습 니 다.(파일 이름 은 마음대로 가 져 갈 수 있 습 니 다.호출 할 때 바 꾸 면 됩 니 다)
//redis.properties  
redis.port=6379
redis.host=127.0.0.1
redis.maxTotal=30
redis.maxIdle=10

JedisUtiles 도구 클래스 로 연결 풀 을 만 들 고 jedis 대상 을 되 돌려 줍 니 다.
public class JedisUtils{
     
    /**
     * jp        jedis   
     * port         
     * host          
     * maxTotal       
     * maxIdle        
     */
    private static JedisPool jp;
    private static int port;
    private static String host;
    private static int maxTotal;
    private static int maxIdle;
    static {
     
        //         ,       String   
        ResourceBundle rb=ResourceBundle.getBundle("redis");
        port=Integer.parseInt(rb.getString("redis.port"));
        host=rb.getString("redis.host");
        maxIdle=Integer.parseInt(rb.getString("redis.maxIdle"));
        maxTotal=Integer.parseInt(rb.getString("redis.maxTotal"));
        JedisPoolConfig jpc=new JedisPoolConfig();
        //     
        jpc.setMaxIdle(maxIdle);
        //     
        jpc.setMaxTotal(maxTotal);
//        String host ="127.0.0.1";
//        int port =6379;
        jp=new JedisPool(jpc,host,port);
    }
    public static Jedis getJedis(){
     
        //  jedis  
        return jp.getResource();
    }
}

작은 사례 하나 주세요.
수 요 는 다음 과 같다.
기 존 파일 은 사용자 가 접근 할 수 있 지만 일반 사용 자 는 일정 시간 10 회 만 접근 할 수 있 고 회원 사용 자 는 일정 시간 30 회 방문 할 수 있 습 니 다.
테스트 를 편리 하 게 하기 위해 일반 사용 자 는 1 분 에 10 번 만 방문 할 수 있 습 니 다.회원 사용 자 는 1 분 에 30 번 의 전체 코드 를 다음 과 같이 방문 할 수 있 습 니 다.(코드 를 편리 하 게 보기 위해 모든 class 를 같은 자바 파일 에 썼 습 니 다)
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.util.ResourceBundle;

/**
 * @Author if
 * @Description: jedis+     
 *   :            ,              10 ,            30 
 * @Date 2021-01-28    02:55
 */
public class Service {
     
    private int num;
    private String id;

    public Service(int num, String id) {
     
        this.num = num;
        this.id = id;
    }
    public void service() throws InterruptedException {
     
//        Jedis jedis=new Jedis("127.0.0.1",6379);
        //  jedis      jedis  
        Jedis jedis=JedisUtils.getJedis();
        String value=jedis.get("id:"+id);
        try{
     
            if(value==null){
     
                System.out.println(id+"    ,        "+num+"     ");
                jedis.setex("id:"+id,60,Long.MAX_VALUE-num+"");
            }else{
     
                Long val=jedis.incr("id:"+id);
                out(id,num-(Long.MAX_VALUE-val));
            }
        }catch(Exception e){
     
            System.out.println(this.id+"             , 10        ,        !");
            Thread.sleep(10000);
            return;
        }finally {
     
            jedis.close();
        }
    }
    public void out(String name,Long num){
     
        System.out.println(name+",    "+num+"   
"
+(this.num-num)+" "); } } class MyThread extends Thread{ Service service; public MyThread(String id,int num) { this.service =new Service(num, id); } @Override public void run() { while (true){ try{ service.service(); Thread.sleep(1000); }catch(Exception e){ e.printStackTrace(); } } } } class JedisUtils{ /** * jp jedis * port * host * maxTotal * maxIdle */ private static JedisPool jp; private static int port; private static String host; private static int maxTotal; private static int maxIdle; static { // , String ResourceBundle rb=ResourceBundle.getBundle("redis"); port=Integer.parseInt(rb.getString("redis.port")); host=rb.getString("redis.host"); maxIdle=Integer.parseInt(rb.getString("redis.maxIdle")); maxTotal=Integer.parseInt(rb.getString("redis.maxTotal")); JedisPoolConfig jpc=new JedisPoolConfig(); // jpc.setMaxIdle(maxIdle); // jpc.setMaxTotal(maxTotal); // String host ="127.0.0.1"; // int port =6379; jp=new JedisPool(jpc,host,port); } public static Jedis getJedis(){ // jedis return jp.getResource(); } } class Main{ public static void main(String[] args) { MyThread m1=new MyThread(" ",10); MyThread m2=new MyThread(" ",10); MyThread m3=new MyThread(" if",30); m1.start(); m2.start(); m3.start(); } }

부분 출력 결 과 는 다음 과 같다.
일반 사용자 샤 오 밍 방문 에 성 공 했 습 니 다.1 분 동안 총 10 번 의 방문 기회 가 있 습 니 다.회원 사용자 if 방문 에 성 공 했 습 니 다.1 분 동안 총 30 번 의 방문 기회 가 있 습 니 다.일반 사용자 샤 오 밍 은 1 분 동안 총 10 번 의 방문 기회 가 있 습 니 다.이것 은 첫 번 째 방문 입 니 다.1 분 동안 29 번 의 방문 기회 가 있 습 니 다.일반 사용자 샤 오 밍 은이것 은 첫 번 째 방문 입 니 다.1 분 안에 일반 사용자 샤 오 홍 에 게 9 번 의 방문 기회 가 있 습 니 다.이것 은 첫 번 째 방문 입 니 다.1 분 안에 9 번 의 방문 기회 가 있 습 니 다.많은 글자 회원 사용자 if 를 생략 합 니 다.이것 은 9 번 째 방문 입 니 다.1 분 안에 21 번 째 방문 기회 가 있 습 니 다.일반 사용자 샤 오 밍 을 방문 하 는 것 은 9 번 째 방문 입 니 다.1 분 안에 일반 사용자 샤 오 홍 을 방문 하 는 기회 가 있 습 니 다.이것 은 9 번 째 방문 입 니 다.1 분 안에 회원 사용자 if 를 방문 하 는 기회 가 있 습 니 다.이것 은 당신 의 10 번 째 방문 입 니 다.1 분 안에 20 번 의 방문 기회 가 있 습 니 다.일반 사용자 샤 오 밍 은 10 번 째 방문 입 니 다.1 분 안에 0 번 의 방문 기회 가 있 습 니 다.일반 사용자 샤 오 홍 은 10 번 째 방문 입 니 다.1 분 안에 0 번 의 방문 기회 가 있 습 니 다.회원 사용자 if.11 번 째 방문 입 니 다.1 분 동안 19 번 의 방문 기회 가 있 습 니 다.일반 사용자 샤 오 밍 사용 자 는 모든 방문 횟수 를 소 진 했 습 니 다.10 초 후에 다시 시도 해 보 세 요.회원 으로 승급 할 수 있 습 니 다!일반 사용자 샤 오 홍 사용 자 는 이미 모든 방문 횟수 를 소 진 했 습 니 다.10 초 후에 다시 시도 해 보 세 요.회원 으로 승급 할 수 있 습 니 다!회원 사용자 if,이것 은 12 번 째 방문 입 니 다.1 분 동안 18 번 의 방문 기회 가 있 습 니 다.회원 사용자 if,이것 은 13 번 째 방문 입 니 다.1 분 동안 17 번 의 방문 기회 가 있 습 니 다.

좋은 웹페이지 즐겨찾기