分布式專案的常見問題:對于首頁每天有大量的人訪問,對資料庫造成很大的訪問壓力,甚至是癱瘓,那如何解決呢?我們通常的做法有兩種:一種是資料快取、一種是網頁靜態化,
redis是一款開源的Key-Value資料庫,運行在記憶體中,由ANSIC撰寫,企業開發通常采用redis來實作快取,同類的產品有Memcache、Mongodb等
Jedis是Redis官方推出的一卷面向Java的客戶端,提供了很多介面供java語言呼叫,可以在Redis官網下載,當然還有一些開源愛好者提供的客戶端,如Jredis、SRP等等,推薦使用Jedis
SpringDataRedis是spring大家族的一部分,提供了在Spring應用中通過簡單的配置訪問redis服務,對redis底層開發包
(Jedis, JRedis, and RJC)進行了高度封裝,RedisTemplate提供了redis各種操作、例外處理及序列化,支持發布訂閱,并對spring 3.1 cache進行了實作,
spring-data-redis針對jedis提供了如下功能:
1.連接池自動管理,提供了一個高度封裝的“RedisTemplate”類
2.針對jedis客戶端中大量api進行了歸類封裝,將同一型別操作封裝為operation介面
ValueOperations:簡單K-V操作
SetOperations:set型別資料操作
ZSetOperations:zset型別資料操作
HashOperations:針對map型別的資料操作
ListOperations:針對list型別的資料操作
Spring Data Redis入門小demo:
1. 創建Maven工程
2. 引入Spring、Redis依賴
<!--spring依賴-->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<!--springDataRedis依賴-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.1</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.7.2.RELEASE</version>
</dependency>
</dependencies>
3. 在src/main/resources下創建properties檔案夾,建立redis-config.properties
redis.host=127.0.0.1 redis.port=6379 redis.pass= redis.database=0 redis.maxIdle=300 redis.maxWait=3000 redis.testOnBorrow=true
maxIdle :最大空閑數
maxWaitMillis:連接時的最大等待毫秒數
testOnBorrow:在提取一個jedis實體時,是否提前進行驗證操作;如果為true,則得到的jedis實體均是可用的
4. 在src/main/resources下創建spring檔案夾 ,創建applicationContext-redis.xml
<?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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:property-placeholder location="classpath*:*.properties" /> <!-- redis 相關配置 --> <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxIdle" value="https://www.cnblogs.com/zhuqianfang-fox/p/${redis.maxIdle}" /> <property name="maxWaitMillis" value="https://www.cnblogs.com/zhuqianfang-fox/p/${redis.maxWait}" /> <property name="testOnBorrow" value="https://www.cnblogs.com/zhuqianfang-fox/p/${redis.testOnBorrow}" /> </bean> <bean id="JedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:host-name="${redis.host}" p:port="${redis.port}" p:password="${redis.pass}" p:pool-config-ref="poolConfig"/> <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"> <property name="connectionFactory" ref="JedisConnectionFactory" /> </bean> </beans>
注意:
在資料發生變化時,需要將快取資料清空,這樣再次查詢時才能獲取最新的資料
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/32659.html
標籤:NoSQL
上一篇:redis 底層資料結構
