Redis的Java客户端 Jedis

2022-03-24 15:50:56 浏览数 (1)

Java客户端 Jedis

Jedis: 一款java操作redis数据库的工具. 使用步骤: 1. 下载jedis的jar包 2. 使用

代码语言:javascript复制
/**
     * 快速入门
     */
    @Test
    public void test1() {
        //1.获取链接    host 指定主机名  本机IP   port 端口  redis的端口号
        Jedis jedis = new Jedis("localhost", 6379);
        //2.操作
        jedis.set("username", "zhangsan");
        //3.关闭连接
        jedis.close();
    }

Jedis操作各种redis中的数据结构

跟Redis的命令相似 String

代码语言:javascript复制
 /**
     * jedis操作各种数据结构
     * 操作String类型
     */
    @Test
    public void test2() {
        //1.获取链接    host 指定主机名  本机IP   port 端口  redis的端口号
        Jedis jedis = new Jedis();//如果使用空参构造 默认值是“localhost” 6379端口
        //2.操作
        //存储
        jedis.set("username", "zhangsan");
        //获取
        String username = jedis.get("username");
        System.out.println(username);

        //可以使用setex()方法存储可以指定过期时间的key value
        //将activecode  haha 键值对存入Redis,并且10秒后自动删除该键值对  可以用来存储有时效的激活码
        jedis.setex("activecode", 10, "haha");
        //3.关闭连接
        jedis.close();
    }

hash

代码语言:javascript复制
  /**
     * 操作hash数据格式
     */
    @Test
    public void test3() {
        //1.获取链接    host 指定主机名  本机IP   port 端口  redis的端口号
        Jedis jedis = new Jedis("localhost", 6379);
        //2.操作
        //存储hash
        jedis.hset("user", "name", "lisi");
        jedis.hset("user", "age", "28");
        jedis.hset("user", "gender", "male");

        //获取hash
        String hget = jedis.hget("user", "name");
        System.out.println(hget);
        //获取hash的所有map中的数据
        Map<String, String> user = jedis.hgetAll("user");
        Set<String> keySet = user.keySet();
        for (String k : keySet) {
            //获取value
            String s = user.get(k);
            System.out.println(k   ":"   s);
        }
        //3.关闭连接
        jedis.close();
    }

list

代码语言:javascript复制
 /**
     * 操作list数据类型
     */
    @Test
    public void test4() {
        //1.获取链接    host 指定主机名  本机IP   port 端口  redis的端口号
        Jedis jedis = new Jedis("localhost", 6379);
        //2.操作
        //存储list
        jedis.lpush("mylist", "a", "b", "c");//lpush从左边存
        jedis.rpush("mylist", "a", "b", "c");//rpush从右边存
        //获取list 范围获取  key:指定所获取list的名称 0 -1 获取所有
        List<String> list = jedis.lrange("mylist", 0, -1);
        System.out.println(list);
        //list的弹出
        String element1 = jedis.lpop("mylist");//从左侧弹出一个并返回
        System.out.println(element1);
        String element2 = jedis.rpop("mylist");//从右侧弹出一个并返回
        System.out.println(element2);
        //再次获取所有值
        //获取list 范围获取  key:指定所获取list的名称 0 -1 获取所有
        List<String> list1 = jedis.lrange("mylist", 0, -1);
        System.out.println(list1);
        //3.关闭连接
        jedis.close();
    }

set

代码语言:javascript复制
/**
     * 不允许重复元素
     * 操作set类型数据
     */
    @Test
    public void test5() {
        //1.获取链接    host 指定主机名  本机IP   port 端口  redis的端口号
        Jedis jedis = new Jedis("localhost", 6379);
        //2.操作
        //set存储  sadd方法
        jedis.sadd("myset", "java", "c", "c#");
        //set获取   smembers方法
        Set<String> set = jedis.smembers("myset");
        System.out.println(set);
        //3.关闭连接
        jedis.close();
    }

sortedset

代码语言:javascript复制
  /**
     * 不允许重复元素,且元素有序
     * 操作sortedset数据类型
     */
    @Test
    public void test6() {
        //1.获取链接    host 指定主机名  本机IP   port 端口  redis的端口号
        Jedis jedis = new Jedis("localhost", 6379);
        //2.操作
        //存储sortedset元素 zadd方法
        jedis.zadd("mysortedset", 3, "盖伦");
        jedis.zadd("mysortedset", 21, "锐雯");
        jedis.zadd("mysortedset", 0, "乌迪尔");
        //获取sortedset
        Set<String> mysortedset = jedis.zrange("mysortedset", 0, -1);
        System.out.println(mysortedset);
        //3.关闭连接
        jedis.close();
    }

jedis连接池: JedisPool

使用: 1. 创建JedisPool连接池对象 2. 调用方法 getResource()方法获取Jedis连接

连接池方法

代码语言:javascript复制
 /**
     * jedis连接池使用
     */
    @Test
    public void test7() {
        //创建一个配置对象
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxTotal(50);//最大连接数
        jedisPoolConfig.setMaxIdle(10);//最大空闲连接
        //创建jedis的连接池对象
        JedisPool jedisPool = new JedisPool(jedisPoolConfig, "localhost", 6379);
        //获取链接
        Jedis jedis = jedisPool.getResource();

        //操作
        jedis.set("hehe", "hahai");
        //关闭 归还到连接池中
        jedis.close();
    }

抽取连接池为一个工具类减少代码冗余 创建连接池工具类

代码语言:javascript复制
/**
 * 连接池的工具类
 *    加载配置文件,配置连接池的参数
 *    提供获取链接的方法
 * 这是一个新建的类
 */
public class JedisPoolUtils {

    private static JedisPool jedisPool;

    static{
        //读取配置文件
        InputStream inputStream = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");
        //创建properties对象
        Properties properties=new Properties();
        //关联文件
        try {
            properties.load(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
        //获取数据 设置到JedisPoolConfig中
        JedisPoolConfig config=new JedisPoolConfig();
        //从配置文件中获取最大连接数    因为获取的是字符串 需要转换成int类型
        config.setMaxTotal(Integer.parseInt(properties.getProperty("maxTotal")));
        //从配置文件中获取最大空闲数    因为获取的是字符串 需要转换成int类型
        config.setMaxIdle(Integer.parseInt(properties.getProperty("setMaxIdle")));
        //初始化JedisPool    传入配置类   从配置文件获取ip     端口号
        jedisPool=new JedisPool(config,properties.getProperty("host"),Integer.parseInt(properties.getProperty("port")));

    }
    /**
     * 获取链接的方法
     */
     public static Jedis getJedis(){
         return jedisPool.getResource();
     }
}

测试方法

代码语言:javascript复制
 /**
     * Jedis连接池的工具类使用
     */
    @Test
    public void test8() {
        //通过连接池工具类获取链接
        Jedis jedis = JedisPoolUtils.getJedis();

        //操作
        jedis.set("hello", "world");
        //关闭连接归还到连接池中
        jedis.close();
    }

0 人点赞