我是靠谱客的博主 合适悟空,最近开发中收集的这篇文章主要介绍Redis基础学习(六):JAVA操作Redis之JedisJedis2、基本使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Jedis

1、概述

Jedis是Redis官方推荐的Java连接开发工具。要在Java开发中使用好Redis中间件,必须对Jedis熟悉才能写成漂亮的代码

2、基本使用

1、pom依赖

        <!-- 阿里JSON解析器 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.58</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.5.1</version>
        </dependency>

2、简单测试

测试连接、发送指令,查询指令。

package com.jedis;

import redis.clients.jedis.Jedis;

public class JedisDemo {
    public static void main(String[] args) {
        //创建对象
        Jedis jedis = new Jedis("localhost",6379);
        //测试连接
        System.out.println(jedis.ping());
        //测试set
        jedis.set("tsetkey","testvalue");
        System.out.println(jedis.get("tsetkey"));

    }
}

执行结果:
在这里插入图片描述

3、事务

1、正常运行

package com.jedis;

import com.alibaba.fastjson.JSONObject;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Transaction;


public class JedisTransactionDemo {
    public static void main(String[] args) {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("hello", "world");
        jsonObject.put("你好", "世界");
        //创建对象
        Jedis jedis = new Jedis("localhost", 6379);
        //测试连接
        System.out.println(jedis.ping());
        //清除原来的数据
        jedis.flushDB();

        //开启事务
        Transaction transaction = jedis.multi();
        try {
            transaction.set("data1", jsonObject.toJSONString());
            transaction.set("data2", jsonObject.toJSONString());
            //执行事务
            transaction.exec();
        } catch (Exception e) {
            //放弃事务
            transaction.discard();
            e.printStackTrace();
        } finally {
            System.out.println(jedis.keys("*"));
            System.out.println(jedis.get("data1"));
            System.out.println(jedis.get("data2"));
            //关闭连接
            jedis.close();
        }
    }
}

执行结果
在这里插入图片描述
2、JAVA运行时异常

package com.jedis;

import com.alibaba.fastjson.JSONObject;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Transaction;


public class JedisTransactionDemo {
    public static void main(String[] args) {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("hello", "world");
        jsonObject.put("你好", "世界");
        //创建对象
        Jedis jedis = new Jedis("localhost", 6379);
        //测试连接
        System.out.println(jedis.ping());
        //清除原来的数据
        jedis.flushDB();

        //开启事务
        Transaction transaction = jedis.multi();
        try {
            transaction.set("data1", jsonObject.toJSONString());
            transaction.set("data2", jsonObject.toJSONString());
            //添加JAVA运行时异常
            int i=1/0;
            //执行事务
            transaction.exec();
        } catch (Exception e) {
            //放弃事务
            transaction.discard();
            e.printStackTrace();
        } finally {
            System.out.println(jedis.keys("*"));
            System.out.println(jedis.get("data1"));
            System.out.println(jedis.get("data2"));
            //关闭连接
            jedis.close();
        }
    }
}

在这里插入图片描述

4、Jedis连接池

package com.jedis;

import com.alibaba.fastjson.JSONObject;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.Transaction;

/**
 * Date: 2021/1/26 11:01
 * FileName: JedisPoolDemo
 * Description: Jedis连接池
 */
public class JedisPoolDemo {
    public static void main(String[] args) {

        JSONObject jsonObject = new JSONObject();
        jsonObject.put("hello", "world");
        jsonObject.put("你好", "世界");

        //1.配置连接池参数
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        //在空闲时检查有效性, 默认为true
        // setTestWhileIdle(true);

        表示一个对象至少停留在idle状态的最短时间,然后才能被idle object evitor扫描并驱逐;
        // 这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义
        // setMinEvictableIdleTimeMillis(60000);逐出连接的最小空闲时间 默认60000毫秒(10分钟)

        //两次扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认10分钟
        // setTimeBetweenEvictionRunsMillis(30000);

        //表示每次扫描最多的对象数,-1为全部
        // setNumTestsPerEvictionRun(-1);

        //2.创建连接池对象
        JedisPool jedisPool = new JedisPool(jedisPoolConfig, "localhost", 6379);
        //3创建对象
        Jedis jedis = null;
        //开启事务

        try {
            Transaction transaction = null;
            try {
                //4从连接池获取对象
                jedis = jedisPool.getResource();
                //5清除原来的数据
                jedis.flushDB();
                transaction = jedis.multi();
                transaction.set("data1", jsonObject.toJSONString());
                transaction.set("data2", jsonObject.toJSONString());
                //执行事务
                transaction.exec();
            } catch (Exception e) {
                transaction.discard();
                e.printStackTrace();
            }
        } catch (Exception e) {

            e.printStackTrace();
        } finally {
            System.out.println(jedis.keys("*"));
            System.out.println(jedis.get("data1"));
            System.out.println(jedis.get("data2"));
            //关闭连接
            if (jedis != null) {
                jedis.close();
            }
            //虚拟机关闭时,释放pool资源
            if (jedisPool != null) {
                jedisPool.close();
            }
        }
    }
}

在这里插入图片描述
执行完有一个日志上的报错,之后再看哪里有问题。

最后

以上就是合适悟空为你收集整理的Redis基础学习(六):JAVA操作Redis之JedisJedis2、基本使用的全部内容,希望文章能够帮你解决Redis基础学习(六):JAVA操作Redis之JedisJedis2、基本使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(70)

评论列表共有 0 条评论

立即
投稿
返回
顶部