Spring--Redis入門集成配置

1、什麼是Redis?

這兩年對於 NoSQL(not only SQL) 的使用已經越加頻繁,因此對於Redis是什麼咱們也不會太過陌生。簡單來講,Redis就是一個開源的,Key-Value數據庫。它的存在主要是爲了減小對SQL的讀取,來提升服務器響應時間,典型的空間換時間策略。html

2、Redis的安裝與命令

這個太多,請看官網:  https://redis.io/           java

教程: http://www.runoob.com/redis/redis-tutorial.htmlgit

3、簡單Java項目中的引用測試

一、導入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();
	}
	
	
	
	
	
	
	
}

4、Spring中集成

一、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

相關文章
相關標籤/搜索