Redis的java客户端jedis

使用jedis连接Redis

第一步:创建一个java工程

第二步:把jedis依赖的jar包导入工程。如果maven工程,添加jedis的坐标。

<dependencies>
        <!-- Jedis -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.8.1</version>
        </dependency>
</dependencies>

第三步:创建一个Jedis对象。构造方法中指定一个host、一个port两个参数。

第四步:调用redis的命令。每个redis命令在jedis中都对应一个方法。

第五步:关闭Jedis。

public class HelloJedis {
    public static void main(String[] args) {
        //实例化一个jedis对象,连接到指定的服务器,指定连接端口号
        Jedis jedis = new Jedis("192.168.199.130",6379);
        //redis密码
        jedis.auth("test");
        //将key为message的信息写入redis数据库中
        jedis.set("message", "Hello Redis!");
        //从数据库中取出key为message的数据
        String value = jedis.get("message");
        System.out.println(value);
        //关闭连接
        jedis.close();
    }
}

使用连接池

第一步:创建一个连接池对象,需要指定服务的ip及端口号。

第二步:从连接池中获得jedis对象。

第三步:使用jedis对象操作redis。

第四步:关闭jedis对象。

第五步:关闭连接池。

连接池是单例、jedis是多例的。

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

public class Snippet {
     public void testJedisPool() throws Exception {
               //创建连接池对象
               JedisPool jedisPool = new JedisPool("192.168.25.153", 6379);
               //从连接池获得连接
               Jedis jedis = jedisPool.getResource();
               //操作redis数据库
               String result = jedis.get("jedis-test");
               System.out.println(result);
               //关闭jedis对象
               jedis.close();
               //关闭连接池
               jedisPool.close();
          }
}

连接redis集群

第一步:创建一个JedisCluster对象,此对象在系统中单例。构造方法需要指定所有节点的ip及端口。

第二步:直接使用JedisCluster操作redis。

第三步:程序结束时关闭JedisCluster。

import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;

public class ClusterJedis {
    public static void main(String[] args) throws IOException {
        //用于存放redis服务器端点集合,可以被使用redis服务器地址与端口
        Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();
        //向集合中添加一个redis服务器端点
        jedisClusterNodes.add(new HostAndPort("192.168.199.130", 6379));
        //创建redis集群对象
        JedisCluster jc = new JedisCluster(jedisClusterNodes);
        //在集群对象中添加数据
        jc.set("foo", "bar");
        //获取数据
        String value = jc.get("foo");
        String message = jc.get("message");
        System.out.println(value+","+message);
        //关闭
        jc.close();
    }
}

实现 java连接redis遇到的

  • 问题:java连接redis出错

可能原因:Redis的配置文件redis.conf里使用了 bind localhost 或者 bind 127.0.0.1

band localhost 只能本机访问,局域网内计算机不能访问

bind 局域网IP 只能局域网内IP的机器访问, 本地localhost都无法访问.

解决方法:注释掉bind 的代码 如:#bind localhost

  • 问题:java连接redis错误

可能原因:redis默认使用的 6379 端口 未开放

解决方法:配置linux,允许访问6379端口,命令:iptables -A INPUT -p tcp –dport 6379 -j ACCEPT

  • 问题:java连接redis出错,错误信息如下:

DENIED Redis is running in protected mode because protected mode is enabled

原因:redis目前处于受保护模式,不允许非本地客户端链接,我们可以通过给redis设置密码,然后客户端链接的时候,写上密码就可以解决了

解决方法:修改redis.conf文件配置

使用命令 :/ requirepass 快速查找到 # requirepass foobared 然后去掉注释,这个foobared改为自己的密码。然后wq保存。

service  redis  restart  这个时候尝试登录redis,发现可以登上,但是执行具体命令是提示操作不允许

尝试用密码登录并执行具体的命令看到可以成功执行

Redis防火墙,开放redis端口

#关闭防火墙
Service  iptables  stop
vi  /etc/sysconfig/iptables
#添加

-A  INPUT  -m  state  --state  NEW  -m  tcp  -p  tcp  --dport  6379  -j  ACCEPT
#重启防火墙
service  iptables  restart
原文地址:https://www.cnblogs.com/aaron911/p/7868584.html