前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。
?1. 在網上下載?windows 版本 的Redis ?。下載了直接解壓出來 :
?
?
2. 雙擊 redis-server.exe 啟動服務(如下圖),使用中就一直不要關閉這個窗口。(也可cdm命令中設置電腦開機自啟動,就不用每次手動開啟這個窗口)
?
?
3. ? redis 配置:(任由你配置在哪個properties文件中,比如是A.properties文件)
我是配置在dbconfig.properties文件中的。
說明:
redis.host? ? -------- ?IP地址 , 如果是本機就127.0.0.1 。 ? 如果是公司服務器就配置服務器IP。
redis.port? ? ?-------- ?jedis 端口號,默認為 6379。
其余都使用默認配置,不用更改。
?
#redis
redis.host=127.0.0.1
redis.port=6379redis.maxTotal=300
redis.maxIdle=10
redis.numTestsPerEvictionRun=1024
redis.timeBetweenEvictionRunsMillis=30000
redis.minEvictableIdleTimeMillis=1800000
redis.softMinEvictableIdleTimeMillis=10000
redis.maxWaitMillis=1500
redis.testOnBorrow=true
redis.testWhileIdle=true
redis.blockWhenExhausted=false
?
?
?
?
?
4. ?spring配置文件中的配置:(任由你放在spring的哪個配置文件中,比如是B.xml 文件。但一定要在B.xml 中引入A.properties?)
?
<!-- 引入配置文件:dbconfig.properties --><context:property-placeholder location="classpath:dbconfig.properties" /><!-- jedis連接池配置 --><bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"><!-- 最大連接數 --><property name="maxTotal" value="${redis.maxTotal}" /><!-- 最大空閑連接數 --><property name="maxIdle" value="${redis.maxIdle}" /><!-- 每次釋放連接的最大數目 --><property name="numTestsPerEvictionRun" value="${redis.numTestsPerEvictionRun}" /><!-- 釋放連接的掃描間隔(毫秒) --><property name="timeBetweenEvictionRunsMillis" value="${redis.timeBetweenEvictionRunsMillis}" /><!-- 連接最小空閑時間 --><property name="minEvictableIdleTimeMillis" value="${redis.minEvictableIdleTimeMillis}" /><!-- 連接空閑多久后釋放, 當空閑時間>該值 且 空閑連接>最大空閑連接數 時直接釋放 --><property name="softMinEvictableIdleTimeMillis" value="${redis.softMinEvictableIdleTimeMillis}" /><!-- 獲取連接時的最大等待毫秒數,小于零:阻塞不確定的時間,默認-1 --><property name="maxWaitMillis" value="${redis.maxWaitMillis}" /><!-- 在獲取連接的時候檢查有效性, 默認false --><property name="testOnBorrow" value="${redis.testOnBorrow}" /><!-- 在空閑時檢查有效性, 默認false --><property name="testWhileIdle" value="${redis.testWhileIdle}" /><!-- 連接耗盡時是否阻塞, false報異常,ture阻塞直到超時, 默認true --><property name="blockWhenExhausted" value="${redis.blockWhenExhausted}" /></bean><!-- jedis客戶端單機版 --><bean id="redisClient" class="redis.clients.jedis.JedisPool"><constructor-arg name="host" value="${redis.host}"></constructor-arg><constructor-arg name="port" value="${redis.port}"></constructor-arg><constructor-arg name="poolConfig" ref="jedisPoolConfig"></constructor-arg></bean><!-- 引用工程中自己書寫的redis常用接口實現類 --><bean id="_jedisClient" class="com.redis.impl.JedisClientSingle"/>
<!-- 引入配置文件:dbconfig.properties --><context:property-placeholder location="classpath:dbconfig.properties" /><!-- jedis連接池配置 --><bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"><!-- 最大連接數 --><property name="maxTotal" value="${redis.maxTotal}" /><!-- 最大空閑連接數 --><property name="maxIdle" value="${redis.maxIdle}" /><!-- 每次釋放連接的最大數目 --><property name="numTestsPerEvictionRun" value="${redis.numTestsPerEvictionRun}" /><!-- 釋放連接的掃描間隔(毫秒) --><property name="timeBetweenEvictionRunsMillis" value="${redis.timeBetweenEvictionRunsMillis}" /><!-- 連接最小空閑時間 --><property name="minEvictableIdleTimeMillis" value="${redis.minEvictableIdleTimeMillis}" /><!-- 連接空閑多久后釋放, 當空閑時間>該值 且 空閑連接>最大空閑連接數 時直接釋放 --><property name="softMinEvictableIdleTimeMillis" value="${redis.softMinEvictableIdleTimeMillis}" /><!-- 獲取連接時的最大等待毫秒數,小于零:阻塞不確定的時間,默認-1 --><property name="maxWaitMillis" value="${redis.maxWaitMillis}" /><!-- 在獲取連接的時候檢查有效性, 默認false --><property name="testOnBorrow" value="${redis.testOnBorrow}" /><!-- 在空閑時檢查有效性, 默認false --><property name="testWhileIdle" value="${redis.testWhileIdle}" /><!-- 連接耗盡時是否阻塞, false報異常,ture阻塞直到超時, 默認true --><property name="blockWhenExhausted" value="${redis.blockWhenExhausted}" /></bean><!-- jedis客戶端單機版 --><bean id="redisClient" class="redis.clients.jedis.JedisPool"><constructor-arg name="host" value="${redis.host}"></constructor-arg><constructor-arg name="port" value="${redis.port}"></constructor-arg><constructor-arg name="poolConfig" ref="jedisPoolConfig"></constructor-arg></bean><!-- 引用工程中自己書寫的redis常用接口實現類 --><bean id="_jedisClient" class="com.redis.impl.JedisClientSingle"/>
?
?
?
?
5. ? maven ?依賴:
?
<!-- redis --><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.7.2</version></dependency>
<!-- redis --><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.7.2</version></dependency>
?
?
?
?
?
?
6. ?書寫的redis常用接口及其實現類:(這個主要看你需要哪些,不用的可以不定義)
?
接口:
?
package com.redis;/*** redis java api 常用接口* @author JiangYu*/
public interface JedisClient {/*** 獲取string緩存值* @param key* @return*/String get(String key);/*** 設置string緩存值* @param key* @param value* @param second* @return*/String set(String key, String value);/*** 設置string緩存值帶失效時間* @param key* @param value* @param second* @return*/String set(String key, String value, int second);/*** 獲取hash緩存值* @param hkey* @param key* @return*/String hget(String hkey, String key);/*** 設置hash緩存值* @param hkey* @param key* @param value* @return*/long hset(String hkey, String key, String value);/*** 遞增緩存值* @param key* @return*/long incr(String key);/*** 設置緩存值有效時間* @param key* @param second* @return*/long expire(String key, int second);/*** 獲取緩存值失效時間* @param key* @return*/long ttl(String key);/*** 刪除string緩存值* @param key* @return*/long del(String key);/*** 批量刪除以string為前綴的key * @param key* @return*/void batchDel(String key);/*** 刪除hash緩存值* @param hkey* @param key* @return*/long hdel(String hkey, String key);/*** 判斷key是否存在* @param key* @return*/boolean exists(String key);/*** 清空緩存數據* @return*/boolean clear();
}
?
?
實現類:
?
package com.redis.impl;import java.util.Iterator;
import java.util.Set;import org.springframework.beans.factory.annotation.Autowired;import com.redis.JedisClient;import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;/*** redis 常用接口實現* @author JiangYu**/
public class JedisClientSingle implements JedisClient {@Autowiredprivate JedisPool jedisPool;/*** 獲取string緩存值* @param key* @return*/@Overridepublic String get(String key) {Jedis jedis = jedisPool.getResource();String string = jedis.get(key);jedis.close();return string;}/*** 設置string緩存值* @param key* @param value* @param second* @return*/@Overridepublic String set(String key, String value) {Jedis jedis = jedisPool.getResource();String string = jedis.set(key, value);jedis.close();return string;}/*** 設置string緩存值帶失效時間* @param key* @param value* @param second* @return*/@Overridepublic String set(String key, String value, int seconds) {Jedis jedis = jedisPool.getResource();String string = jedis.set(key, value);jedis.expire(key, seconds);jedis.close();return string;}/*** 獲取hash緩存值* @param hkey* @param key* @return*/@Overridepublic String hget(String hkey, String key) {Jedis jedis = jedisPool.getResource();String string = jedis.hget(hkey, key);jedis.close();return string;}/*** 設置hash緩存值* @param hkey* @param key* @param value* @return*/@Overridepublic long hset(String hkey, String key, String value) {Jedis jedis = jedisPool.getResource();Long result = jedis.hset(hkey, key, value);jedis.close();return result;}/*** 遞增緩存值* @param key* @return*/@Overridepublic long incr(String key) {Jedis jedis = jedisPool.getResource();Long result = jedis.incr(key);jedis.close();return result;}/*** 設置緩存值有效時間* @param key* @param second* @return*/@Overridepublic long expire(String key, int second) {Jedis jedis = jedisPool.getResource();Long result = jedis.expire(key, second);jedis.close();return result;}/*** 獲取緩存值失效時間* @param key* @return*/@Overridepublic long ttl(String key) {Jedis jedis = jedisPool.getResource();Long result = jedis.ttl(key);jedis.close();return result;}/*** 刪除string緩存值* @param key* @return*/@Overridepublic long del(String key) {Jedis jedis = jedisPool.getResource();Long result = jedis.del(key);jedis.close();return result;}/*** 批量刪除以string為前綴的key * @param key* @return*/@Overridepublic void batchDel(String key) {Jedis jedis = jedisPool.getResource();Set<String> set = jedis.keys(key+"*"); Iterator<String> it = set.iterator(); while(it.hasNext()){ String keyStr = it.next(); jedis.del(keyStr);}jedis.close();}/*** 刪除hash緩存值* @param hkey* @param key* @return*/@Overridepublic long hdel(String hkey, String key) {Jedis jedis = jedisPool.getResource();Long result = jedis.hdel(hkey, key);jedis.close();return result;}/*** 判斷key是否存在* @param key* @return*/@Overridepublic boolean exists(String key) {Jedis jedis = jedisPool.getResource();boolean exists = jedis.exists(key);jedis.close();return exists;}/*** 清空緩存數據* @return*/@Overridepublic boolean clear() {Jedis jedis = jedisPool.getResource();jedis.flushAll();jedis.close();return true;}}
?
?
?
?
?
?
?
7. ?測試通過,可以使用了:
?
?