这两年对于 NoSQL(not only SQL) 的使用已经越加频繁,因此对于Redis是什么咱们也不会太过陌生。简单来讲,Redis就是一个开源的,Key-Value数据库。它的存在主要是为了减小对SQL的读取,来提升服务器响应时间,典型的空间换时间策略。html
这个太多,请看官网: https://redis.io/ java
教程: http://www.runoob.com/redis/redis-tutorial.htmlgit
一、导入Jar包: jedis-2.9.0.jar 、commons-pool2-2.5.0.jarredis
二、测试:spring
package redis; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import org.junit.Test; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; public class RedisTest { /** * 引入jar包: * jedis-2.9.0.jar * commons-pool2-2.5.0.jar * **/ /** * TODO Redis单例测试 * @author geYang * @date 2018-04-07 16:39 */ @Test public void demo1() { //设置IP和端口号 Jedis jedis = new Jedis("127.0.0.1", 6379); //保存数据 jedis.set("name", "imooc"); //读取数据 System.out.println(jedis.get("name")); //删除数据 // jedis.del("name"); System.out.println(jedis.get("name")); //释放资源 jedis.close(); } /** * TODO 链接池测试 * @author geYang * @date 2018-04-07 16:41 */ @Test public void demo2() { //链接池配置 JedisPoolConfig config = new JedisPoolConfig(); //设置最大链接数 config.setMaxTotal(10); //设置最大空闲链接数 config.setMaxIdle(5); //设置链接IP端口号 JedisPool pool = new JedisPool(config, "127.0.0.1", 6379); Jedis jedis = null; try { jedis = pool.getResource(); jedis.set("name", "geYang"); System.out.println(jedis.get("name")); } catch (Exception e) { e.printStackTrace(); } finally { if (jedis != null) { jedis.close(); } if (pool != null) { pool.close(); } } } /** * TODO Keys测试 * @author geYang * @date 2018-04-08 10:24 */ @Test public void demo3() { Jedis jeds = new Jedis("127.0.0.1", 6379); Set<String> keys = jeds.keys("*"); Iterator<String> it = keys.iterator() ; while(it.hasNext()){ String key = it.next(); System.out.println(key); } jeds.close(); } /** * TODO List测试 * @author geYang * @date 2018-04-08 10:27 */ @Test public void demo4() { Jedis jedis = new Jedis("127.0.0.1", 6379); System.out.println("链接成功"); //存 jedis.lpush("mylist", new String[] {"1","2","3"}); jedis.lpush("mylist", "a"); jedis.lpush("mylist", "b"); jedis.lpush("mylist", "c"); //读 List<String> list = jedis.lrange("mylist", 0, -1); for (String str : list) { System.out.println(str); } jedis.close(); } /** * TODO Hash测试 * @author geYang * @date 2018-04-08 10:46 */ @Test public void demo5() { Jedis jedis = new Jedis("127.0.0.1", 6379); System.out.println("链接成功"); // jedis.hset("myhash", "tel", "18281916257"); HashMap<String,String> hashMap = new HashMap<>(); hashMap.put("sex", "man"); hashMap.put("address", "China"); jedis.hmset("myhash", hashMap); Map<String, String> map = jedis.hgetAll("myhash"); System.out.println(map); jedis.close(); } }
一、Maven仓库:数据库
<!-- Not Only SQL REDIS --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>
二、spring-redis.xml(须要将该文件加载入spring上下文) , 配置:spring-mvc
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:property-placeholder location="classpath:config.properties"/> <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <!-- 最大链接数 --> <property name="maxTotal" value="30"/> <!-- 最大空闲链接数 --> <property name="maxIdle" value="10"/> <!-- 每次释放链接的最大数目 --> <property name="numTestsPerEvictionRun" value="1024"/> <!-- 释放链接的扫描间隔(毫秒) --> <property name="timeBetweenEvictionRunsMillis" value="30000"/> <!-- 链接最小空闲时间 --> <property name="minEvictableIdleTimeMillis" value="1800000"/> <!-- 链接空闲多久后释放, 当空闲时间>该值 且 空闲链接>最大空闲链接数 时直接释放 --> <property name="softMinEvictableIdleTimeMillis" value="10000"/> <!-- 获取链接时的最大等待毫秒数,小于零:阻塞不肯定的时间,默认-1 --> <property name="maxWaitMillis" value="1500"/> <!-- 在获取链接的时候检查有效性, 默认false --> <property name="testOnBorrow" value="true"/> <!-- 在空闲时检查有效性, 默认false --> <property name="testWhileIdle" value="true"/> <!-- 链接耗尽时是否阻塞, false报异常,true阻塞直到超时, 默认true --> <property name="blockWhenExhausted" value="false"/> </bean> <bean id="jedisPool" class="redis.clients.jedis.JedisPool"> <constructor-arg name="poolConfig" ref="jedisPoolConfig"/> <constructor-arg name="host" value="${redis.host}"/> <constructor-arg name="port" value="${redis.port}"/> </bean> </beans>
三、简单使用:服务器
package com.gy.spring.mvc.service.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.gy.spring.mvc.service.RedisService; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; @Service public class RedisServiceImpl implements RedisService { @Autowired private JedisPool jedisPool; @Override public String get(String key) { Jedis jedis = jedisPool.getResource(); String value = null; try { value = jedis.get(key); } catch (Exception e) { e.printStackTrace(); } finally { close(jedis); } return value; } @Override public void set(String key, String value) { Jedis jedis = jedisPool.getResource(); try { jedis.set(key, value); } catch (Exception e) { e.printStackTrace(); } finally { close(jedis); } } @Override public List<String> getList(String key,long start,long end) { Jedis jedis = jedisPool.getResource(); List<String> list = null; try { list = jedis.lrange(key, start, end); } catch (Exception e) { e.printStackTrace(); } finally { close(jedis); } return list; } @Override public void set(String key, List<String> value) { Jedis jedis = jedisPool.getResource(); try { } catch (Exception e) { e.printStackTrace(); } finally { close(jedis); } } @Override public void del(String key) { Jedis jedis = jedisPool.getResource(); try { jedis.del(key); } catch (Exception e) { e.printStackTrace(); } finally { close(jedis); } } /** * TODO 释放资源 * @param jedis * @author geYang * @date 2018-04-10 10:13 */ private void close(Jedis jedis) { if(jedis!=null) { jedis.close(); } } }
四、项目源码: https://gitee.com/ge.yang/spring-demo/tree/master/spring-mvcmvc