這兩年對於 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