Redis的应用非常广泛,用法也是多种多样,对于Java开发者而言,经常会使用到redis到项目中,可能是普通的java项目、Maven项目或者pring整合redis,SpringBoot整合redis等,下面潘老师带大家一起来看一下各种整合使用场景!
1、我这里使用的Redis是安装在Windows系统中的5.0.9版本,和Linux版本操作起来方法一样(Linux系统注意要关闭防火墙)。如果你还没有安装,可以参考:Redis单机版安装步骤图文教程(Linux和Windows)
2、非Maven项目请先准备jar包(自行网上下载,建议去阿里云Maven仓库或mvnrepository仓库查找下载:
1)jedis-2.9.0.jar
,类似于mysql驱动包
2)commons-pool2-2.8.1.jar
,类似于数据库连接池包
1)不整合连接池
新建普通Java项目,将jedis-2.9.0.jar
导入到buildpath
中,然后操作代码如下:
import org.junit.Test; import redis.clients.jedis.Jedis; public class TestRedis { @Test public void test1() { // 1. 创建Jedis 对象-设置IP地址和端口 Jedis jedis = new Jedis("127.0.0.1", 6379); // 2. 保存数据 jedis.set("myblog", "panziye.com"); // 3. 根据key获取数据 String value = jedis.get("myblog"); System.out.println(value); // 4.释放资源 jedis.close(); } }
运行结果:
2)整合连接池
和数据库连接池整合很类似,再将commons-pool2-2.8.1.jar
添加至buildpath
中,使用代码如下:
import org.junit.Test; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; public class TestRedis { @Test public void test2() { // 获取连接池配置对象 JedisPoolConfig config = new JedisPoolConfig(); // 设置最大连接数 config.setMaxTotal(30); // 设置最大的空闲连接数 config.setMaxIdle(10); // 获得连接池: JedisPool jedisPool = new JedisPool(poolConfig,host,port); JedisPool jedisPool = new JedisPool(config,"127.0.0.1",6379); // 获得核心对象:jedis Jedis jedis = null; try{ // 通过连接池来获得连接 jedis = jedisPool.getResource(); // 设置数据 jedis.set("myname","panziye"); // 获取数据 String myname = jedis.get("myname"); System.out.println(myname); } catch (Exception e){ e.printStackTrace(); } finally { // 释放资源 if(jedis != null){ jedis.close(); } // 释放连接池 if(jedisPool != null){ jedisPool.close(); } } } }
普通的Maven项目使用代码案例和上面一样,不过就是jar包可以通过在pom.xml
中引入坐标即可,以下是这两个包的中央仓库坐标:
jedis-2.9.0.jar
的坐标:
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>
commons-pool2-2.8.1.jar
的坐标:
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>2.8.1</version> </dependency>
在这里我们基于之前的搭建好的SSM项目进行整合,之前的SSM项目参考:Eclipse搭建SSM框架开发环境的流程(Spring+SpringMVC+Mybatis)
1、下载相关jar包,并导入到lib目录
jedis-2.9.0.jar
、commons-pool2-2.8.1.jar
和spring-data-redis-1.7.2.RELEASE.jar
如果用Maven,则spring-data-redis-1.7.2.RELEASE.jar
的中央仓库坐标为:
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.7.2.RELEASE</version> </dependency>
2、在
src
目录下新建redis.properties
配置文件,具体配置如下:
redis.host=127.0.0.1 redis.port=6379 redis.maxIdle=300 redis.maxWaitMillis=1000 redis.timeout=100000 redis.maxTotal=600 redis.testOnBorrow=true redis.testOnReturn=true
3、在spring核心配置文件spring.xml
中新增如下配置:
1)引入redis.properties
文件,由于我之前引入过jdbc.properties
,只需在后面加一下即可。
<context:property-placeholder location="classpath:jdbc.properties,classpath:redis.properties"/>
2)整合redis配置:
<!--设置连接池--> <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxIdle" value="${redis.maxIdle}"/> <property name="maxTotal" value="${redis.maxTotal}" /> <property name="maxWaitMillis" value="${redis.maxWaitMillis}" /> <property name="testOnBorrow" value="${redis.testOnBorrow}" /> <property name="testOnReturn" value="${redis.testOnReturn}" /> </bean> <!--设置链接属性--> <bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"> <property name="hostName" value="${redis.host}" /> <property name="port" value="${redis.port}" /> <!-- 此处我的redis密码为空 --> <property name="password" value="" /> <property name="timeout" value="${redis.timeout}"></property> <property name="poolConfig" ref="poolConfig" /> </bean> <!-- Jedis模板配置 --> <bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate"> <property name="connectionFactory" ref="connectionFactory" /> </bean>
4、新建RedisController.java
测试代码如下:
@Controller public class RedisController { @Autowired private RedisTemplate<String,String> redisTemplate; @RequestMapping("set") public String setTest(){ //设置 redisTemplate.opsForValue().set("username", "潘子夜"); //获取 System.out.println(redisTemplate.opsForValue().get("username")); return "success"; } }
5、运行浏览器访问,发现能成功设置与获取,在此不做展示。
在这里我们基于之前搭建的案例操作:IntelliJ IDEA基于SpringBoot如何搭建SSM开发环境
1、pom.xml
新增redis依赖:
<!-- 支持redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
2、application.properties
新增redis相关配置:
#配置redis # Redis数据库索引(默认为0) spring.redis.database=0 # Redis服务器地址 spring.redis.host=127.0.0.1 # Redis服务器连接端口 spring.redis.port=6379 # Redis服务器连接密码(默认为空) spring.redis.password= # 连接池最大连接数(使用负值表示没有限制) spring.redis.pool.max-active=200 # 连接池最大阻塞等待时间(使用负值表示没有限制) spring.redis.pool.max-wait=-1 # 连接池中的最大空闲连接 spring.redis.pool.max-idle=10 # 连接池中的最小空闲连接 spring.redis.pool.min-idle=0 # 连接超时时间(毫秒) spring.redis.timeout=1000
3、新建测试代码,运行结果如图:
@Controller public class RedisController { @Autowired private RedisTemplate<String,String> redisTemplate; @RequestMapping("/redis") public String redis(){ redisTemplate.opsForValue().set("password","www.panziye.com"); System.out.println(redisTemplate.opsForValue().get("password")); return "success"; } }
以上就是各种整合redis的情况,如果有疑问或者建议,请留言评论!