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. 树莓派Raspbian系统密码

    树莓派Raspbian系统密码 树莓派Raspbian系统默认登录用户名为pi,该账户默认密码是raspberry(可在raspi-config中修改). 树莓派的Raspbian系统root用户默认 ...

  2. 2019-08-01 jquery中常用方法

    1.attr()方法设置或返回被选元素的属性值 <html> <meta charset="utf-8"/> <head><title&g ...

  3. Vue第一天

    什么是 Vue.js? Vue.js是前端的主流框架之一,与 Angular.js.React.js一起,并称为前端三大主流框架 Vue.js是一套构建用户界面的框架,只关注视图层,它不仅易上手,还便 ...

  4. Redux 中间件和异步操作

    回顾一下Redux的数据流转,用户点击按钮发送了一个action,  reducer 就根据action 和以前的state 计算出了新的state, store.subscribe 方法的回调函数中 ...

  5. Java 数据类型 & 变量与常量 & 注释

    一.数据类型 1.数据类型分类 Java 的数据类型分为两大类: 基本数据类型:整数.浮点数.字符型.布尔型 引用数据类型(对象类型):类.数组,字符串.接口等. 2.基本数据类型 四类八种基本数据类 ...

  6. Java 基本类型包装类Wrapper

    一.包装类概述 1.为什么需要包装类 Java并不是纯面向对象的语言.Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的.基本数据类型有它的优势:性能(效率高,节省空间). ...

  7. Android源码分析(七)-----如何解决java编译版本问题

    一 : 问题描述 Your version is: java version "1.6.0_31" Java(TM) SE Runtime Environment (build 1 ...

  8. Impala快速入门

    一.简介 Cloudera公司推出,提供对HDFS.Hbase数据的高性能.低延迟的交互式SQL查询功能.基于Hive使用内存计算,兼顾数据仓库,具有实时.批处理.多并发的优点.是CDH平台首选的PB ...

  9. Linux装B命令

    原文:https://mp.weixin.qq.com/s/CNmMRjl0iZ8EBPq5VgJHsA 1.空心字体 yum install -y figlet figlet happy 1.0 2 ...

  10. unittest管理用例生成测试报告

    #登录方法的封装 from appium import webdriver from time import sleep from python_selenium.Slide import swipe ...