Redis数据库初步学习2 - jedis

3 篇文章 0 订阅
3 篇文章 0 订阅

1. 使用 Java 客户端操作redis

我们使用 jedis

1.1 什么是 jedis

​ jedis 是一款 Java 操作redis 数据库的工具。

1.2 jedis使用步骤

  1. 下载 jedis 的 jar 包。从 maven 上下载

  2. 下载 commons-pool 。在 Apache 官网, Commons 一栏中有 pool jar包。

  3. 使用

1.2.1 jedis 的快速入门

​ 一共就是由三行代码:

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

/**
 * jedis 的测试类
 */

public class JedisTest {

    /**
     * 快速入门
     */
    @Test
    public void test1() {
        // 1. 获取连接
        Jedis jedis = new Jedis("localhost", 6379);
        // 2. 操作
        jedis.set("username", "zhangsan");
        // 3. 关闭连接
        jedis.close();
    }

}
1.2.2 操作 字符串 类型

​ 也非常简单,因为 jedis 中对数据库操作的方法名和 redis 对数据类型的操作名一样。

@Test
    public void test2() {
        // 1. 获取连接
        Jedis jedis = new Jedis(); // 如果使用空参构造,偶人 "localhost" , 6379
        // 2. 操作
        jedis.set("username", "zhangsan");
        String name = jedis.get("username");
        System.out.println(name);

        // 可以使用 setex 方法 可以指定过期时间的 key value
        // 将 activecode 呵呵 键值对 存入 redis 并且 20 秒后自动删除该键值对
        jedis.setex("activecode", 20, "呵呵");
        name = jedis.get("activecode");
        System.out.println(name);
        // 3. 关闭连接
        jedis.close();
    }
1.2.3 操作 哈希 类型
/**
     * hash 数据结构操作
     */
    @Test
    public void test3() {
        // 1. 获取连接
        Jedis jedis = new Jedis(); // 如果使用空参构造,偶人 "localhost" , 6379
        // 2. 操作
        jedis.hset("user","name","lisi");
        jedis.hset("user","age","23");
        jedis.hset("user","gender","male");

        // 获取
        String name = jedis.hget("user", "name");
        System.out.println(name);

        // 获取所有数据
        Map<String, String> user = jedis.hgetAll("user");

        // keyset
        Set<String> keySet = user.keySet();
        for(String str : keySet) {
            System.out.println(str + " : " + user.get(str));
        }

        jedis.del("user");

        // 3. 关闭连接
        jedis.close();
    }
1.2.4 操作集合类型
/**
     * set 数据结构操作
     */
    @Test
    public void test4() {
        // 1. 获取连接
        Jedis jedis = new Jedis(); // 如果使用空参构造,偶人 "localhost" , 6379
        // 2. 操作
        // 存储
        jedis.sadd("myset", "java","php","c++");
        // 获取
        Set<String> myset = jedis.smembers("myset");
        System.out.println(myset);


        // 3. 关闭连接
        jedis.close();
    }
1.2.5 操作 有序集合 类型
/**
     * sortedset 数据结构操作
     */
    @Test
    public void test5() {
        // 1. 获取连接
        Jedis jedis = new Jedis(); // 如果使用空参构造,偶人 "localhost" , 6379
        // 2. 操作
        // 存储
        jedis.zadd("mysortedset", 85, "亚索");
        jedis.zadd("mysortedset", 33, "盖伦");
        jedis.zadd("mysortedset", 50, "易");

        // 获取
        Set<String> mysortedset = jedis.zrange("mysortedset", 0, -1);
        System.out.println(mysortedset);
        // 3. 关闭连接
        jedis.close();
    }
1.2.6 操作 列表 类型
/**
     * list 数据结构操作
     */
    @Test
    public void test6() {
        // 1. 获取连接
        Jedis jedis = new Jedis(); // 如果使用空参构造,偶人 "localhost" , 6379
        // 2. 操作
        // 存储
        jedis.lpush("mylist","lisi", "zhangsan");
        jedis.rpush("mylist","wangwu", "zhaoliu");

        // list 范围获取
        System.out.println(jedis.lrange("mylist", 0, -1));

        // 弹出
        System.out.println(jedis.lpop("mylist"));
        System.out.println(jedis.rpop("mylist"));
        // 3. 关闭连接
        jedis.close();
    }

1.3 jedis 连接池 - JedisPool

使用

  • 创建 JedisPool 连接池对象
  • 调用方法 getResource() 获取 Jedis 连接

实例代码

/**
     * jedis 连接池使用
     */
    @Test
    public void test7() {
        // 0. 创建一个配置对象
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(50);
        config.setMaxIdle(10);

        // 1. 创建 Jedis 连接池对象
        JedisPool jedisPool = new JedisPool(config, "localhost",6379);

        // 2. 获取连接
        Jedis jedis = jedisPool.getResource();
        // 3. 使用
        jedis.set("hehe", "haha");
        System.out.println(jedis.get("hehe"));

        // 4. 关闭  归还到连接池
        jedis.close();
    }

1.4 jedis 连接池工具类

​ 由于我们对于 jedis 连接池的配置全部都写我们需要运行的类中,这样会导致耦合度太高,我们需要将配置 jedis 连接池的一些方法和属性全部都写到一个工具类中,已以提供复用。

​ 首先我们需要编写一个 properties 以提供数据,并将其放置在 src 文件中:

host=127.0.0.1
port=6379
maxTotal=50
maxIdle=10

​ 接着编者我们的连接池工具类:

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

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * JedisPool 工具类
 * 加载配置文件,配置连接池的参数
 * 提供获取连接的方法
 */
public class JedisPoolUtils {

    private static JedisPool jedisPool;

    static {
        // 读取配置文件
        InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");
        // 创建一个 Properties 对象
        Properties pro = new Properties();
        // 关联文件
        try {
            pro.load(is);
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 获取数据,设置到 JedisPoolConfig 中
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));
        config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle")));
        // 初始化JedisPool
        jedisPool = new JedisPool(config, pro.getProperty("host"), Integer.parseInt(pro.getProperty("port")));
    }

    /**
     * 获取连接的方法
     */

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

​ 最后,就可以愉快的使用我们的工具类来创建 Jedis 对象了。

/**
     * jedis 连接池工具类
     */
    @Test
    public void test8() {
        // 通过连接池工具类获取
        Jedis jedis = JedisPoolUtils.getJedis();

        // 使用
        jedis.set("hello", "world");
        // 关闭  归还到连接池
        jedis.close();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值