Jedis

Jedis简介

Java语言连接Redis服务:Jedis

Jedis常规操作

写一个程序使用redis

jedis基于maven的配置

<dependency>
   <groupId>redis.clients</groupId>
   <artifactId>jedis</artifactId>
   <version>2.9.0</version>
</dependency>

测试jnuit的配置

<dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <version>4.12</version>
</dependency>

测试jedis使用

package com.jzs;

import org.junit.Test;
import redis.clients.jedis.Jedis;

/**
 * @author zhongshun
 * @date 2021/7/30 18:03
 */
public class JedisTest {

    @Test
    public void testJedis(){
        //1、连接redis
        Jedis jedis = new Jedis("127.0.0.1",6379);
        //2、操作redis
        jedis.set("name","zhongshun");
        String name = jedis.get("name");
        System.out.println(name);
        //3、关闭连接
        jedis.close();
    }
}

运行结果

image-20210730181159916

测试list

@Test
    public void testList() {
        //1、连接redis
        Jedis jedis = new Jedis("127.0.0.1", 6379);
        //2、操作redis
        jedis.lpush("list1", "a", "b", "c");
        jedis.rpush("list1", "x", "y", "z");

        List<String> list = jedis.lrange("list1", 0, -1);
        for (String s : list) {
            System.out.println(s);
        }
        System.out.println("从右边取出一个数据" + jedis.rpop("list1"));
        //3、关闭连接
        jedis.close();
    }

image-20210730182459113

测试hash

@Test
    public void testHash() {
        //1、连接redis
        Jedis jedis = new Jedis("127.0.0.1", 6379);
        //2、操作redis
        jedis.hset("hash1", "k1", "v1");
        jedis.hset("hash1", "k2", "v2");
        jedis.hset("hash1", "k3", "v3");
        jedis.hset("hash1", "k4", "v4");

        Map<String, String> map = jedis.hgetAll("hash1");
        System.out.println(map);

        //3、关闭连接
        jedis.close();
    }

image-20210730182726642

Jedis工具类

jedis配置文件 redis.properties

redis.host=127.0.0.1
redis.port=6379
redis.maxTotal=30
redis.maxIdle=10

工具类

package com.jzs.util;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.util.ResourceBundle;

/**
 * @author zhongshun
 * @date 2021/7/30 23:46
 */
public class JedisUtils {

    private static JedisPool jp = null;
    private static String host = null;
    private static int port;
    private static int maxTotal;
    private static int maxIdle;

    static {
        //加载配置文件
        ResourceBundle rb = ResourceBundle.getBundle("redis");
        host = rb.getString("redis.host");
        port = Integer.parseInt(rb.getString("redis.port"));
        maxTotal = Integer.parseInt(rb.getString("redis.maxTotal"));
        maxIdle = Integer.parseInt(rb.getString("redis.maxIdle"));

        JedisPoolConfig jpc = new JedisPoolConfig();
        jpc.setMaxTotal(maxTotal);    //最大连接数
        jpc.setMaxIdle(maxIdle);     //活动连接数

        jp = new JedisPool(jpc, host, port);
    }

    public static Jedis getJedis() {
        return jp.getResource();
    }

}

Jedis案例

image-20210731001851991

image-20210731001858248

package com.jzs;

import com.jzs.util.JedisUtils;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.exceptions.JedisDataException;

/**
 * @author zhongshun
 * @date 2021/7/30 23:14
 */
public class Service {
    private String id;
    private int num;

    public Service(String id, int num) {
        this.id = id;
        this.num = num;
    }

    //控制单元
    public void service() {
        //Jedis jedis = new Jedis("127.0.0.1", 6379);
        Jedis jedis = JedisUtils.getJedis();
        String value = jedis.get("compid" + id);
        //判断该值是否存在
        try {
            if (value == null) {
                //不存在,创建该值
                jedis.setex("compid" + id, 5, Long.MAX_VALUE - num + "");
            } else {
                //存在,自增,调用业务
                long val = jedis.incr("compid" + id);
                business(id, num - (Long.MAX_VALUE - val));
            }
        } catch (JedisDataException e) {
            System.out.println("使用次数已经达到上线,请升级会员级别");
            return;
        } finally {
            jedis.close();
        }
    }

    //业务操作
    public void business(String id, long val) {
        System.out.println("用户:" + id + "业务执行操作第" + val + "次");
    }
}

class MyThread extends Thread {
    Service sc;

    public MyThread(String id, int num) {
        sc = new Service(id, num);
    }

    public void run() {
        while (true) {
            sc.service();
            try {
                Thread.sleep(300);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

class Main {
    public static void main(String[] args) {
        MyThread mt1 = new MyThread("初级用户", 10);
        MyThread mt2 = new MyThread("高级用户", 30);
        mt1.start();
        mt2.start();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值