java web redis_java web redis使用(二)
上篇中已经安装好redis,然后下面就说怎么在java web中用客户端来使用regis
使用jedis java客户端
一:一个简单的示例代码:
public static void main(String[] args) {
Jedis jedis = new Jedis( "147.151.240.234" , 6379 );
jedis.set("foo" , "bar" );
String value = jedis.get("foo" );
System.out.println(value);
}
二:spring中配置:
首先,在项目中引入jeids的jar包。
Xml代码
redis.clients groupId >
jedis artifactId >
2.0.0 version >
dependency >
其次,在spring配置文件中添加配置(也可以直接new出这些对象,一样的)
Xml代码
最后,调用的时候
Java代码
ShardedJedis jedis = shardedJedisPool.getResource();
jedis.get(key); //从redis服务器获取值
jedis.set(key, value); //将值保存到redis服务器
jedis pool的问题
在使用jedis pool时遇到了这个问题:It seems like server has closed the connection
原因分析:
1.redis server 关闭了此客户端的连接:server端设置了maxidletime(默认是5分钟),服务端会不断循环检测clinet的最后一次通信时间(lastinteraction),如果大于maxidletime,则关闭连接,并回收相关资源。client在向该连接中写数据后就会由于server端已经关闭而出现 broken pipe的问题。
2.pool的设置错误:
Xml代码
;!-- jedis shard信息配置 -->
factory-method="getResource" />
上面的这种配法在spring初始化时获取一次实例化jedisCommands,而后每次的redis的调用时并未从pool中获取
解决方案:
设置
Xml代码
最近初次尝试使用redis,java客户端采用的jedis,写了几个简单的类满足基本的服务器配置,以及客户端对象的使用等。
客户端对象的创建
package jediscache.common;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.Protocol;
public class JedisFactory {
private JedisPoolConfig jedisPoolConfig;
private JedisPool jedisPool;
public JedisFactory(JedisPoolConfig jedisPoolConfig) {
super ();
this .jedisPoolConfig = jedisPoolConfig;
}
public Jedis getJedisInstance(String host) {
return getJedisPool(host, Protocol.DEFAULT_PORT).getResource();
}
public Jedis getJedisInstance(String host, int port) {
return getJedisPool(host, port).getResource();
}
public JedisPool getJedisPool(String host) {
return getJedisPool(host, Protocol.DEFAULT_PORT);
}
public JedisPool getJedisPool(String host, int port) {
if (jedisPool == null ) {
jedisPool = new JedisPool(jedisPoolConfig, host, port);
}
return jedisPool;
}
/**
* 配合使用getJedisInstance方法后将jedis对象释放回连接池中
*
* @param jedis 使用完毕的Jedis对象
* @return true 释放成功;否则返回false
*/
public boolean release(Jedis jedis) {
if (jedisPool != null && jedis != null ) {
jedisPool.returnResource(jedis);
return true ;
}
return false ;
}
}
使用客户端对象
public void testLpush() {
JedisFactory factory = new JedisFactory( new JedisPoolConfig());
Jedis jedis = factory.getJedisInstance("localhost" );
try {
String word = "word" ;
jedis.lpush(word, "first" );
jedis.lpush(word, "second" );
jedis.lpush(word, "three" );
System.out.println("word : " + jedis.lrange(word, 0 , - 1 ));
} finally {
factory.release(jedis);
}
}
java web redis_java web redis使用(二)相关推荐
- java web redis_java web网页版redis客户端工具
[写在前面]:基于网上程序改编,如果存在bug,请自行修改!不喜勿喷! 开发工具:eclipse 开发环境:jdk 1.6 访问URL:http://localhost:8080/redis-admi ...
- java 操作 redis_java操作Redis
10. java操作Redis 10.1 环境准备 1. 引入依赖 redis.clients jedis 2.9.0 2.创建jedis对象 package org.example; import ...
- Java web与web gis学习笔记(二)——百度地图API调用
系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...
- java下拉菜单_薪资对比:Java开发和web前端薪资哪个好
Web前端开发和Java开发哪个薪资更高,Web前端开发和Java开发发展前景更好? 互联网行业飞速发展,因此有很多小伙伴想要进入IT行业分一杯羹,但是学什么技术更好,哪一个语言的就业薪资更高,就成了 ...
- Kali Linux Web 渗透测试— 第十二课-websploit
Kali Linux Web 渗透测试- 第十二课-websploit 文/玄魂 目录 Kali Linux Web 渗透测试- 第十二课-websploit..................... ...
- 小白学Java Web 3 Web前端之CSS基本知识2
这一篇接着上一篇的内容来分享,上一篇还有大量的样式属性没有列出,不过在继续分享之前,我想先来分享一下关于网页的布局相关的一些东西,因为下一篇我打算分 享用仅仅前面三小篇的内容来制作一个简单的静态网页, ...
- java计算机毕业设计Web产品管理系统MyBatis+系统+LW文档+源码+调试部署
java计算机毕业设计Web产品管理系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计Web产品管理系统MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: 项目架构 ...
- java计算机毕业设计web智慧医疗平台设计与实现MyBatis+系统+LW文档+源码+调试部署
java计算机毕业设计web智慧医疗平台设计与实现MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计web智慧医疗平台设计与实现MyBatis+系统+LW文档+源码+调试部署 本源 ...
- Web基础配置篇(二): Maven配置及使用
Web基础配置篇(二): Maven配置及使用 一.概述 Maven是一个软件开发管理工具,主要管理工作是:依赖管理,项目一键构建. 以前用过ant,很不方便,maven比较简单易用. 然后后面又来了 ...
最新文章
- 链表问题4——反转双向链表
- Java高并发编程:HandlerThread
- java 有没有with语句_Java中的try-with-resources语句
- 全栈工程师薪水_2020 Java 全栈工程师进阶路线图,不可错过
- D3 插入删除元素元素
- python-九九乘法打印
- python风变编程和扇贝编程_到底是扇贝编程还是风变编程?
- idea-统计代码行数Statistic
- TOSCA自动化测试工具
- STM32——EMWIN对话框(十二)
- 【高效程序员系列】3、别碰鼠标------让键盘飞起来
- c++并发编程实战 第一章
- 国外问卷调查这个项目可以做吗?国外问卷调查怎么赚钱?
- 为什么对渣土车的监控和管理如此重要
- 用户模块跳转、sso单点登录、跨域访问
- lin通信ldf文件解析_LIN通讯机制
- jquery/jquery-3.5.1.min.js net::ERR_ABORTED 404 (Not Found)
- 超详细!一篇文章带你轻松入门神经调控
- 如何将多页面pdf分割成一页一页的PDF文件
- java kfs_Hypertable hbase hdfs kfs java与c++的较量
热门文章
- 贪婪洞窟2服务器维护,《贪婪洞窟2》11月30日更新维护多久 贪婪洞窟2更新维护公告...
- Sublime Text 3 详细安装教程
- python去除中间空格只留一个_python 删除字符串中的连续空格只保留一个
- 爬虫必备反爬技能:使用动态ip
- 从您的计算机移除此产品,解决office提示“此操作只对目前安装的产品有效”的方法...
- Css内边距与外边距
- html文字如何排布成圆形,css多个扇形怎么拼凑成圆?
- linux下php支持mysql_linux下php扩展mysqli的支持 .
- mysql replication延迟_深入mysql主从复制延迟问题的详解
- UserWarning: Matplotlib is currently using agg in Object Detection API