Redis——Java连接Redis

Java连接redis,需要导入一个依赖

<!--redis-->
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.1.0</version>
</dependency>  

为了方便测试,我们引入junit

<!--junit-->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13</version>
</dependency>

这里我们给出一个例子,jedis对象就像我们的客户端

RedisDemo

package com.hzy.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.40.128",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.40.128",6379);
        jedis.auth("root");
        jedis.set("strName","hzy");
        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.40.128",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();
    }
}

 而且我们还可以通过连接池的方式进行操作,这里我们通过一个工具类进行获取jedis

RedisPoolUtil

package com.hzy.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.40.128",6379);
    }
    public static Jedis getJedis() {
        Jedis jedis = jedisPool.getResource();
        jedis.auth("root");
        return jedis;
    }
    public static void close(Jedis jedis) {
        jedis.close();
    }
}

然后一个测试类RedisDemo2

package com.hzy.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);
    }
}

第一次查询的时候,会输出数据库中查询,后续查询都是在redis中查询到的

下面演示Hash类型RedisDemo3

package com.hzy.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<String, String> map = jedis.hgetAll(key);
            System.out.println("redis中查询:" + map);
        } else {
            // 查询数据库,并返回结构
            System.out.println("数据库中查询");
            jedis.hset(key,"id","1");
            jedis.hset(key,"username","hzy");
            jedis.hset(key,"password","123456");
        }

        RedisPoolUtil.close(jedis);
    }
}
发布了423 篇原创文章 · 获赞 273 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/HeZhiYing_/article/details/104553990