1、Jedis简介

实际开发中,我们需要用Redis的连接工具连接Redis然后操作Redis,

对于主流语言,Redis都提供了对应的客户端;

https://redis.io/clients

2、Jedis连接Redis

建一个Maven项目,

pom里加下jedis依赖,

<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
package com.java1234.redis;

import redis.clients.jedis.Jedis;

/**
 * 测试类
 * @author user
 *
 */
public class JedisTest { public static void main(String[] args) {
Jedis jedis=new Jedis("192.168.1.107",6379); // 创建客户端 设置IP和端口
jedis.set("name", "java知识分享网"); // 设置值
String value=jedis.get("name"); // 获取值
System.out.println(value);
jedis.close(); // 释放连接资源
}
}

测试代码,

运行 报错了

连接超时,

我们配置下防火墙 开一个6379端口权限

firewall-cmd --zone=public --add-port=6379/tcp --permanent

firewall-cmd --reload

继续运行 还是报错 连接超时 错误;

我们配置下 redis配置文件

[root@localhost redis]# vi /usr/local/redis/redis.conf

这里绑定了本机,我们把这个备注掉;

# bind 127.0.0.1

配置完后

[root@localhost redis]# ./bin/redis-cli shutdown

[root@localhost redis]# ./bin/redis-server ./redis.conf

要重启下redis服务;

继续运行 又报错了

Exception in thread "main" redis.clients.jedis.exceptions.JedisDataException: DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients. In this mode connections
are only accepted from the loopback interface. If you want to connect from external computers to Redis you may adopt one of the following solutions: 1) Just disable protected mode sending the command 'CONFIG SET protected-mode no' from the loopback interface
by connecting to Redis from the same host the server is running, however MAKE SURE Redis is not publicly accessible from internet if you do so. Use CONFIG REWRITE to make this change permanent. 2) Alternatively you can just disable the protected mode by editing
the Redis configuration file, and setting the protected mode option to 'no', and then restarting the server. 3) If you started the server manually just for testing, restart it with the '--protected-mode no' option. 4) Setup a bind address or an authentication
password. NOTE: You only need to do one of the above things in order for the server to start accepting connections from the outside.

at redis.clients.jedis.Protocol.processError(Protocol.java:127)

at redis.clients.jedis.Protocol.process(Protocol.java:161)

at redis.clients.jedis.Protocol.read(Protocol.java:215)

at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:340)

at redis.clients.jedis.Connection.getStatusCodeReply(Connection.java:239)

at redis.clients.jedis.Jedis.set(Jedis.java:121)

at com.java1234.redis.JedisTest.main(JedisTest.java:14)

这个是因为远程连接redis redis自我保护 拒绝访问;

有两种方法 解决

第一种 直接去掉自我保护功能(不推荐)

[root@localhost redis]# vi /usr/local/redis/redis.conf

进入配置

找到 protected-mode yes

改成 no即可

编辑后 重启redis服务,然后运行 ,结果出来了

第二种 设置redis连接密码

进入客户端

[root@localhost redis]# ./bin/redis-cli

127.0.0.1:6379> config set requirepass 123456

设置密码 123456

127.0.0.1:6379> quit

[root@localhost redis]# ./bin/redis-cli

127.0.0.1:6379> auth 123456

OK

说明设置成功

package com.java1234.redis;

import redis.clients.jedis.Jedis;

/**
 * 测试类
 * @author user
 *
 */
public class JedisTest { public static void main(String[] args) {
Jedis jedis=new Jedis("192.168.1.107",6379); // 创建客户端 设置IP和端口
jedis.auth("123456"); // 设置密码
jedis.set("name", "java知识分享网"); // 设置值
String value=jedis.get("name"); // 获取值
System.out.println(value);
jedis.close(); // 释放连接资源
}
}

这样就OK了

3、Jedis连接池

package com.java1234.redis;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig; /**
 * 测试类
 * @author user
 *
 */
public class JedisTest { public static void main(String[] args) {
JedisPoolConfig config=new JedisPoolConfig(); // 连接池的配置对象
config.setMaxTotal(100); // 设置最大连接数
config.setMaxIdle(10); // 设置最大空闲连接数 JedisPool jedisPool=new JedisPool(config,"192.168.1.107",6379); Jedis jedis=null;
try{
jedis=jedisPool.getResource(); // 获取连接
jedis.auth("123456"); // 设置密码
jedis.set("name", "java知识分享网"); // 设置值
String value=jedis.get("name"); // 获取值
System.out.println(value); }catch(Exception e){
e.printStackTrace();
}finally{
if(jedis!=null){
jedis.close();
}
if(jedisPool!=null){
jedisPool.close();
}
}
}
}

运行:

原文出处:

[1] Java1234_小锋, Jedis连接 HelloWorld实现, http://blog.java1234.com/blog/articles/314.html

[2] Java1234_小锋, Jedis 连接池实例, http://blog.java1234.com/blog/articles/315.html

Jedis与Jedis连接池的更多相关文章

  1. Jedis分片Sentinel连接池实验

    Jedis分片Sentinel连接池实验 1.起因 众所周知,Redis官方HA工具Sentinel已经问世很久了,但令人费解的是,Jedis官方却迟迟没有更新它的连接池.到目前Maven库中最新的2 ...

  2. 简单是Jedis实例(相对连接池而言)

    在引入相关jar包后,只要new一个Jedis对象,就能做redis相关操作了.以下是一个简单的jedis实例: package com.pptv.redis; import java.util.Ar ...

  3. Jedis连接池对Redis数据操作

    [效果图] [前言] Redis是常用于缓存的非关系型数据库,感觉更像加强型的HashMap的用法,依靠Key和Value保存数据.官方推荐用Jedis来操作Redis数据库,使用和JDBC差不多,一 ...

  4. Java与redis交互、Jedis连接池JedisPool

    Java与redis交互比较常用的是Jedis. 先导入jar包: commons-pool2-2.3.jar jedis-2.7.0.jar 基本使用: public class RedisTest ...

  5. jedis的连接池

    1.需要先打开虚拟机,并开启Linux系统的端口号:6379: 其中,第一行代码为修改字符编码格式,解决SSH中文乱码问题. 2.开启redis: 3.利用连接池实现数据的存取: (1)代码实现: i ...

  6. Jedis编程设计:连接池

        Jedis作为redis的最佳客户端,它提供了连接池的特性,"连接池"在通常情况下可以有效的提高应用的通信能力,并且这是一种良好的设计模式.Jedis的连接池设计基于apa ...

  7. jedis连接池详解(Redis)

    转自:http://tianxingzhe.blog.51cto.com/3390077/1684306 原子性(atomicity): 一个事务是一个不可分割的最小工作单位,事务中包括的诸操作要么都 ...

  8. Jedis连接池使用

    构建redis连接池,返还到连接池 private static JedisPool jedisPool = null; private static Jedis jedis; static { je ...

  9. java客户端Jedis操作Redis Sentinel 连接池

    pom配置: <dependency> <groupId>org.springframework.data</groupId> <artifactId> ...

  10. 在spring中如何生成一个bean (一个对象,比如jedis的连接池对象)【我】

    在spring中,要想生成一个单例对象(比如jedis的连接池对象) 方法1: 在 spring中用 bean 标签生成(反正就是让spring生成并管理单例的对象) 方法2: 把要生成的单例对象类, ...

随机推荐

  1. 在浏览器中输入 url 地址到显示主页的过程

    总体来说分为以下几个过程:1. DNS 解析2. TCP 连接3. 发送 HTTP 请求4. 服务器处理请求并返回 HTTP 报文5. 浏览器解析渲染页面6. 连接结束

  2. IDEA 环境下更改Maven的仓库镜像提高下载速度

    Maven把所有常用的jar包存放在一个集中的仓库(repository)中,项目需要什么jar包和他相关的依赖,只要在pom.xml文件中声明就可了,还是很方便的.repository分两种,一个是 ...

  3. JavaScript 简单类型和复杂类型区别

    一.基本类型 1.概述 值类型又叫做基本数据类型,简单数据类型.在存储时,变量中存储的是值本身,因此叫做值类型 2.基本类型在内存中的存储 基本数据类型存储在栈区中. 3.基本类型作为函数的参数 基本 ...

  4. ARM架构体系

    架构 处理器家族 ARMv1 ARM1 ARMv2 ARM2.ARM3 ARMv3 ARM6, ARM7 ARMv4 StrongARM.ARM7TDMI.ARM9TDMI ARMv5 ARM7EJ. ...

  5. 使用kubeadm安装Kubernetes 1.15.3 并开启 ipvs

    一.安装前准备 机器列表 主机名 IP node-1(master) 1.1.1.101 node-2(node) 1.1.1.102 node-3(node) 1.1.1.103 设置时区 cp / ...

  6. 启动keepalived报错(VI_1): received an invalid passwd!

    一.署keepalived后测试主down掉后无法自动切换到备 查看message日志一直报此错误 [root@lb-nginx-master ~]# tailf /var/log/messages ...

  7. iView学习笔记(三):表格搜索,过滤及隐藏列操作

    iView学习笔记(三):表格搜索,过滤及隐藏某列操作 1.后端准备工作 环境说明 python版本:3.6.6 Django版本:1.11.8 数据库:MariaDB 5.5.60 新建Django ...

  8. commix 命令注入工具

    关于系统命令注入,可以参考这篇文章:命令攻击介绍 系统命令注入场景 在对企业进行安全测试时候,很少会发现系统注入漏洞.这是因为大部分情况下代码业务主要是数据操作.文件操作.逻辑处理和api接口调用等, ...

  9. 转载 Easyui Tree方法扩展 - getLevel(获取节点级别)

    Easyui Tree一直就没有提供这个方法,以前没有用到,所 以一直没怎么在意,这次自己用到了,顺便扩展了一个方法,分享给大家. $.extend($.fn.tree.methods, { getL ...

  10. 【Linux】linux ln文件夹的链接(转)

    1 文件的链接ln -s a.py b.pya.py 软链接到b.py (无论 b.py 文件存在与否 都可以成功)2 文件夹的链接ln -s a ba文件夹软链接到b文件夹(b文件夹不能提前创建) ...