SSM+Jedis初体验
第一次用SSM+Jedis搭建web项目,SSM引用之前随笔:http://www.cnblogs.com/duniang/p/8334983.html,在这记录一下。
一、redis安装
这里不记录详细过程,只记录大概流程也就是比较重要的步骤。
1、redis推荐安装在Linux系统下,因此紧随潮流,安装虚拟机(VMware)、Linux系统(CentOS)。
2、电脑主系统是Windows因此为了方便,在Windows系统安装SecureCRT来链接Linux系统。
3、下载redis压缩包:http://www.redis.cn/download.html
4、安装redis需要gcc环境,因此Linux系统中需要安装gcc环境:yum install gcc-c++
5、解压redis压缩包,安装redis:(命令突然想不起来了,以后有机会在补上吧)
6、安装redis完成后,这时启动redis是属于前端启动,说直白点就是启动后命令窗口就无法操作了(需Ctrl+c退出)。前端启动很不方便,因此需要设置成后端启动:
- 进入之前解压后redis的文件copy文件(redis.conf)到redis安装路径,(此处截图做个标记)
修改redis.conf文件 daemonize yes(大概在100+行):
- 最后测试, 注意命令需要携带redis.conf文件(不然它是不会解析redis.conf文件的): ./bin/redis-server ./redis.conf
二、pom.xml
添加Jedis的jar包,此处记录一下,之前报错的时候搜bug有一点意外收获:jedis包括2.4.1,2.5.1等高版本的JedisPoolConfig没有maxActive属性。
1 <dependency> 2 <groupId>redis.clients</groupId> 3 <artifactId>jedis</artifactId> 4 <version>2.9.0</version> 5 </dependency>
三、redis.properties
redis配置有好多,我没有仔细查,只是记录一下各位前辈常用的一下配置
1 ########################## 2 ## redis缓存配置 3 ########################## 4 # redis主机IP 5 redis.host=redisIP地址 6 # redis端口 7 redis.port=6379 8 # 链接超时 9 # redis.timeout=2000 10 # 密码 11 # redis.password=root 12 # 指定redis数据库 13 # redis.database=2 14 15 ########################## 16 ## redis连接池配置 17 ########################## 18 # 最大连接数 19 redis.maxTotal=30 20 # 最大空闲连接数 21 redis.maxIdle=10 22 # 获取链接最大等待毫秒 23 redis.maxWaitMillis=1000 24 # 获取链接时检查有效性 25 redis.testOnBorrow=true 26 27 # 在空闲时监测有效性 28 # redis.testWhileIdle=true 29 # 链接耗尽时是否阻塞 30 # redis.blockWhenExhausted=true 31 # 每次释放链接的最大数目 32 # redis.numTestsPerEvictionRun=1024 33 # 释放链接的扫描间隔(毫秒) 34 # redis.timeBetweenEvictionRunsMillis=30000 35 # 最小空闲时间 36 # redis.minEvictableIdleTimeMillis=1800000 37 # 链接空闲多久后释放 38 # redis.softMinEvictableIdleTimeMillis=10000
四、applicationContext-Redis.xml
第一个项目不要多复杂,能跑起来就可以,所以没有配置过多。
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 5 6 <!-- 导入redis.properties --> 7 <bean id="propertyConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 8 <property name="location" value="classpath:redis.properties" /> 9 </bean> 10 11 <!-- redis 数据源 --> 12 <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig"> 13 <!-- 定义最大连接数 --> 14 <property name="maxTotal" value="${redis.maxTotal}" /> 15 <!-- 定义最大空闲链接数 --> 16 <property name="maxIdle" value="${redis.maxIdle}" /> 17 <!-- 定义最长等待时间 --> 18 <property name="maxWaitMillis" value="${redis.maxWaitMillis}" /> 19 <!-- 在获取连接时检查是否有效性 --> 20 <property name="testOnBorrow" value="${redis.testOnBorrow}" /> 21 </bean> 22 23 <!-- redis 链接池 --> 24 <bean id="jedisPool" class="redis.clients.jedis.JedisPool" destroy-method="destroy" depends-on="poolConfig"> 25 <!-- redis 主机IP --> 26 <constructor-arg name="host" value="${redis.host}" /> 27 <!-- redis 端口 --> 28 <constructor-arg name="port" value="${redis.port}" /> 29 <!-- 加载JedisPool配置信息 --> 30 <constructor-arg name="poolConfig" ref="poolConfig" /> 31 </bean> 32 33 34 </beans>
五、单元测试
关键代码
1 @Test 2 public void testJedisClient() { 3 // 定义redis连接池 4 JedisPool jedisPool = null; 5 // 定义redis实例 6 Jedis jedis = null; 7 try { 8 // 映射redis配置文件 9 ApplicationContext applicationContext = 10 new ClassPathXmlApplicationContext("classpath:applicationContext-Redis.xml"); 11 // 获取redis连接池 12 jedisPool = (JedisPool) applicationContext.getBean("jedisPool"); 13 // 获取redis实例 14 jedis = jedisPool.getResource(); 15 // 存值 16 jedis.set("name", "rose"); 17 // 取值 18 String name = jedis.get("name"); 19 // 输出控制台 20 System.out.println(name); 21 }catch (Exception e){ 22 e.printStackTrace(); 23 }finally { 24 // 释放资源 25 if(jedis != null) 26 jedis.close(); 27 } 28 if(jedisPool != null){ 29 jedisPool.close(); 30 } 31 }
六、bug
写程序吗哪有不出bug的,记录一下:
解决方案:
首先这个异常中文的大概意思就是:无法从连接池中获取链接。
仔细一思考感觉不对啊,我才刚启动,怎么可能连接池就没链接呢。
于是百度,发现触发这个异常似乎有很多种情况,不过都和我的不匹配,不过最后终于凭借10几年的百度经验,还是找到了。
就是需要将redis.conf中的这个配置(protected-mode设为no),protected-mode是redis 3.2 之后加入的新特性,它的大概作用就是禁止公网访问redis cache。
接下来修改一下redis.conf,大概在redis.conf文件100行左右:
OK 成功了,嘿嘿嘿~~~
转载于:https://www.cnblogs.com/duniang/p/9072978.html
SSM+Jedis初体验相关推荐
- eclipse整合ssm运行初体验
众所周知,eclipse由于免费,各方面的方便程度确实不如idea,但是这时候老板偏偏让你用eclipse运行ssm项目,咱还是得会呀,卷死那些不会的! 先初始化一个dynamic web proje ...
- 用鸿蒙跑了个 “hello world”!鸿蒙开发初体验
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源 | https://my.oschina.net/u ...
- Spring Security:初体验
在上一篇文章中,我们对于Spring Security有了一个基本的了解,那么重点是在Spring Boot中如何使用Spring Security呢? 文章目录 Spring Security初体验 ...
- Java开发 - Redis初体验
前言 es我们已经在前文中有所了解,和es有相似功能的是Redis,他们都不是纯粹的数据库.两者使用场景也是存在一定的差异的,本文目的并不重点说明他们之间的差异,但会简要说明,重点还是在对Redis的 ...
- 苹果电脑安装python3密码_mac系统安装Python3初体验
前沿 对于iOS开发不要随便拆卸系统自带的Python,因为有很多 library 还是使用 Python2.7. 1 安装Xcode 1.1 App Store 搜索Xcode 并安装 1.2 安装 ...
- MapReduce编程初体验
需求:在给定的文本文件中统计输出每一个单词出现的总次数 第一步: 准备一个aaa.txt文本文档 第二步: 在文本文档中随便写入一些测试数据,这里我写入的是 hello,world,hadoop he ...
- 小程序 缩放_缩放流星应用程序的初体验
小程序 缩放 by Elie Steinbock 埃莉·斯坦博克(Elie Steinbock) 缩放流星应用程序的初体验 (First Experiences Scaling a Meteor Ap ...
- wxWidgets刚開始学习的人导引(3)——wxWidgets应用程序初体验
wxWidgets刚開始学习的人导引全文件夹 PDF版及附件下载 1 前言 2 下载.安装wxWidgets 3 wxWidgets应用程序初体验 4 wxWidgets学习资料及利用方法指导 5 ...
- Windows Embedded Standard开发初体验(二)
支持Silverlight的Windows Embedded Standard 好了,完成安装之后,我们就可以来做Windows Embedded Standard的第一个操作系统镜像了.在开始菜单中 ...
- 深度探索Hyperledger技术与应用之超级账本初体验(附部署代码)
2019独角兽企业重金招聘Python工程师标准>>> 本章零基础地介绍了如何快速体验超级账本搭建的区块链网络,我们先绕过了比较复杂的初始化配置,用官方提供的fabric-sampl ...
最新文章
- ASP.NET的Cookie跨域问题
- OpenCV-Python,计算机视觉开发利器
- mysql全量备份与增量备份_Mysql增量备份与全量备份
- unity3d与eclipse协同工作环境
- Logistics Regression公式推导
- 来自开发者的点赞 · 网易云信揽获三大技术奖项
- python制作好看的界面_【一点资讯】Python界面如何漂亮的展示树形结构,PyQt5控件之QTreeWidget详解 www.yidianzixun.com...
- 特定SQL的查询优化
- Python中的MySQL数据库编程
- Linux之移动复制和删除
- Aveva Marine 新建项目001
- 浅谈数据库设计技巧(上)
- 程序员转行房屋设计师,本来不信,当看到楼梯后,我信了!
- 用c++库函数实现WCHAR写入文件
- JPA 单元测试配置
- 前端面试谈:项目经历的 STAR 法则
- (纪中)2173. 无根树(tree)【SPFA】
- 【开箱即用】VMware Win7虚拟机下载
- 第八讲:工业网络——单环冗余(理论)
- JavaScript系列文章:变量提升和函数提升
热门文章
- 1010 Radix (25 分) 超级坑恶魔坑
- Jupyter notebook、JypterLab的本地安装与使用
- java中do until_RxJava—takeUntil实践
- 万兆网口和千兆网口区别_万兆网卡的安装 以及注意事项
- C++头文件的若干说明和const对象定义
- android 缓存程序,Android轻量缓存框架--ASimpleCache
- java5个成员_JavaSE基础知识(5)—面向对象(5.2类的成员)
- pandas读取excel带汉字的列头_Pandas读取excel与中文文件名
- c# 收取邮件 解析_请教C#读取POP3邮件后,怎么获取正文的内容
- 【UKIEPC2017:D】Deranging Hat(求序列a到a‘交换过程的具体实现)