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 번 의 방문 기회 가 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redis 해시에 대한 완벽한 가이드변경 가능하므로 필요에 따라 쉽게 변경하고 업데이트할 수 있습니다. Redis 해시는 구조가 평평하므로 JSON에서와 같이 여러 수준을 가질 수 없습니다. redis 해시의 명명 규칙은 hash:key 로 입력되므로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.