Java连接redis数据库并测试

首先要导入jar。为了后续测试方便,我们再引入junit。

  
       
            redis.clients
            jedis
            3.2.0
        

        
        
            junit
            junit
            4.13
        

在redis包下建立一个RedisDemo类。

package com.cc.redis;

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

public class RedisDemo {
    public static void main(String[] args) {
            // 连接Redis服务器
            Jedis jedis = new Jedis("192.168.222.130",6379);
            // 权限认证,也就是我们redis-cli设置的密码
            jedis.auth("root");
            // 测试是否连接成功
            // CentOS下查看防火墙运行访问的端口号:firewall-cmd --list-ports
            // 开启6379端口号:firewall-cmd --zone=public --add-port=6379/tcp --permanent
            // 重启防火墙:firewall-cmd --reload
            System.out.println(jedis.ping());
        }

        /*
         * 测试String,redis中有哪些命令,jedis中就有哪些方法
         * */
        @Test
        public void test1() {
            Jedis jedis = new Jedis("192.168.222.130",6379);
            jedis.auth("root");
            jedis.set("strName","cmy");
            String strName = jedis.get("strName");
            System.out.println(strName);

            jedis.close();
        }

        /*
         * redis是为了减轻数据库的访问压力
         * 如果某key存在,就在redis中查询,否则就去数据库中查询
         * 并将查询出的数据存入到redis
         * */
        @Test
        public void test2() {
            Jedis jedis = new Jedis("192.168.222.130",6379);
            jedis.auth("root");

            String key = "appName"; // key的名称
            if (jedis.exists(key)) {
                String s = jedis.get(key);
                System.out.println("从redis中查询到的");
            } else {
                String s = "应用名";
                jedis.set(key,s);
                System.out.println("从数据库中查询的");
            }

            jedis.close();
        }

}

在运行main的时候会报错,那么我们去到xshell中设置一下如下语句。

   CentOS下查看防火墙运行访问的端口号:firewall-cmd --list-ports
   开启6379端口号:firewall-cmd --zone=public --add-port=6379/tcp --permanent
   重启防火墙:firewall-cmd --reload

Java连接redis数据库并测试_第1张图片

重新运行main即可。

下面是test1, test2的结果。

Java连接redis数据库并测试_第2张图片

 test2:

 Java连接redis数据库并测试_第3张图片

上述的写法中有很多重复的代码,简化代码,使看起来更清晰,我们采用下面的方法测试,将公共的代码写到一个单独的类中。

RedisPoolUtil类
package com.cc.redis;

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

public class RedisPoolUtil {
    private static JedisPool jedisPool;

    static {
        // 连接池配置信息,不写有默认值
//        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
//        jedisPoolConfig.setMaxTotal(5); // 设置最大连接数
//        jedisPoolConfig.setMaxIdle(1); // 设置最大空闲数
        // 连接池
//        JedisPool jedisPool = new JedisPool(jedisPoolConfig,"192.168.40.128",6379);
        // 连接池
        jedisPool = new JedisPool("192.168.222.130",6379);
    }
    public static Jedis getJedis() {
        Jedis jedis = jedisPool.getResource();
        jedis.auth("root");
        return jedis;
    }
    public static void close(Jedis jedis) {
        jedis.close();
    }

}

下面是测试

package com.cc.redis;

import redis.clients.jedis.Jedis;

public class RedisDemo2 {
    public static void main(String[] args) {
            Jedis jedis = RedisPoolUtil.getJedis();

            String key = "strKey";
            if (jedis.exists(key)) {
                String s = jedis.get(key);
                System.out.println("redis中查询到的");
            } else {
                String s = "应用名";
                jedis.set(key,s);
                System.out.println("数据库中查询");
            }

            RedisPoolUtil.close(jedis);
        }
}

测试结果:

Java连接redis数据库并测试_第4张图片

Java连接redis数据库并测试_第5张图片

再测试一下hash类型的数据。

package com.cc.redis;

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

import java.util.Map;

/*
 * 完成Hash类型读取
 * 用hash存储一个对象
 * 判断redis中是否存在该key,如果存在,返回该值
 * 如果不存在,查询数据库,并把该值存入redis
 * */
public class RedisDemo3 {
    @Test
    public void test1() {
        Jedis jedis = RedisPoolUtil.getJedis();
        String key = "myUser";
        if (jedis.exists(key)) {
            Map map = jedis.hgetAll(key);
            System.out.println("redis中查询:" + map);
        } else {
            // 查询数据库,并返回结构
            System.out.println("数据库中查询");
            jedis.hset(key,"id","1");
            jedis.hset(key,"username","cmy");
            jedis.hset(key,"password","123");
        }

        RedisPoolUtil.close(jedis);
    }

}

测试结果:

 Java连接redis数据库并测试_第6张图片

Java连接redis数据库并测试_第7张图片

 

 

你可能感兴趣的:(Redis)