spring+redis整合
本文實現spring+redis快取伺服器的整合。
1、windows下redis安裝
(1)、下載
由於本文出於測試目的,因此使用windows的redis版本。從https://github.com/ServiceStack/redis-windows下載redis,下載後解壓,找到解壓資料夾中的downloads中的redis-latest.zip壓縮包,該壓縮包就是當前支援的最新的windiws版本(這裡需要注意了,好似只是支援64位的系統,而且需要使用Administrator的管理員使用者名稱登陸才能執行),解壓該壓縮包得到redis的資原始檔。
(2)、建立啟動指令碼
建立一個bat指令碼,本文中衛startup.bat指令碼,然後在其中輸入如下啟動redis伺服器的命令:
redis-server.exe redis.windows.conf
(3)、啟動redis伺服器
雙擊啟動指令碼即可啟動伺服器。啟動後如下:
關閉該命令列視窗即可關閉redis伺服器。
(4)、測試
雙擊執行解壓目錄下的redis-cli.exe程式,正常執行後會彈出客戶端測試框,輸入如下命令進行簡單測試
set hello 123
get hello
如圖
(5)、配置redis密碼
先關閉redis伺服器,然後編輯redis.windows.conf檔案,搜尋requirepass配置,去掉前面的註釋符號(#)。儲存並關閉,此時redis的預設密碼就是requirepass後面的值,本文為foobared。
(6)、使用密碼登陸測試
首先執行指令碼啟動redis伺服器,然後在redis-cli.exe所在目錄下安裝shift鍵,點選滑鼠郵件選擇"在此處開啟命令視窗"。輸入如下命令登陸redis伺服器進行測試:
redis-cli.exe -h 127.0.0.1 -p 6379 -a foobared
登陸成功後按照之前的測試步驟進行redis測試即可。2、linux下的redis安裝和配置
linux下的redis安裝和配置可以參考如下部落格:http://blog.csdn.net/smilefyx/article/details/73822851
3、spring+redis整合測試
(1)、依賴匯入
建立一個maven工程,匯入必要的spring和其他相關依賴jar包,然後匯入如下redis相關的jar包:
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.6.0.RELEASE</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.3</version>
</dependency>
(2)、建立java配置類
本文使用的是基於java的配置類,配置類中主要是配置redis的連線工廠,redis的模板操作類、cacheManager和一個簡單的測試bean。程式碼如下:
package cn.hi_fei.redis.configuration;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import cn.hi_fei.redis.impl.CacheServiceImpl;
@Configuration
@EnableCaching
public class RedisCacheConfig extends CachingConfigurerSupport{
@Bean
public RedisConnectionFactory redisConnectionFactory() {
JedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory();
// Defaults
redisConnectionFactory.setHostName("127.0.0.1");
redisConnectionFactory.setPort(6379);
return redisConnectionFactory;
}
@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory cf) {
RedisTemplate<String, String> redisTemplate = new RedisTemplate<String, String>();
redisTemplate.setConnectionFactory(cf);
return redisTemplate;
}
@Bean
public CacheManager cacheManager(RedisTemplate<String, String> redisTemplate) {
RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
// Number of seconds before expiration. Defaults to unlimited (0)
cacheManager.setDefaultExpiration(3000); // Sets the default expire time (in seconds)
return cacheManager;
}
@Bean("CacheServiceImpl")
public CacheServiceImpl getCacheServiceImpl() {
return new CacheServiceImpl();
}
}
(3)、測試程式碼
首先建立一個用於載入配置的基類,該類用於載入配置。原始碼如下
package cn.hi_fei.redis;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import cn.hi_fei.redis.configuration.RedisCacheConfig;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {RedisCacheConfig.class})
public class BaseTest {
}
第二步建立一個使用spring快取相關注解的測試服務類,用於在測試用例中自動注入用來測試spring的註解。程式碼如下:
package cn.hi_fei.redis.impl;
import org.apache.log4j.Logger;
import org.springframework.cache.annotation.Cacheable;
public class CacheServiceImpl {
Logger logger = Logger.getLogger(CacheServiceImpl.class);
@Cacheable(value="test",key="#key")
public String hello(String key) {
logger.info("Get without cache.");
return "Hello!";
}
}
第三部建立繼承於第一步的基類的實體測試類,用於測試redis和spring的配合使用。本例中使用兩種方式用於測試redis。第一種是基於spring註解的實現,第二種是基於spring都redis操作的模板類實現。原始碼如下:
package cn.hi_fei.redis.impl;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import org.apache.log4j.Logger;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.redis.core.RedisTemplate;
import cn.hi_fei.redis.BaseTest;
public class CacheTest extends BaseTest{
Logger logger = Logger.getLogger(CacheTest.class);
@Autowired
private RedisTemplate<String, String> redis;
@Autowired
@Qualifier("CacheServiceImpl")
private CacheServiceImpl mService;
@Test
public void test() {
//1
logger.info("1="+this.mService.hello("hello3"));
logger.info("2="+this.mService.hello("hello3"));
try {
logger.info("Wait input to exit.");
InputStreamReader is_reader = new InputStreamReader(System.in);
new BufferedReader(is_reader).readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//2
logger.info("1="+this.hello("hello4"));
logger.info("2="+this.hello("hello4"));
try {
logger.info("Wait input to exit.");
InputStreamReader is_reader = new InputStreamReader(System.in);
new BufferedReader(is_reader).readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public String hello(String key) {
String v = redis.opsForValue().get(key);
if(null != v) {
logger.info("Get from cache.");
return v;
}
logger.info("Get without cache.");
redis.opsForValue().set(key, "Hello!");
return "Hello!";
}
}
執行後的測試結果如下:
(4)、程式碼下載
本例的原始碼工程可以從如下地址進行下載
相關文章
- spring+redis的整合,使用spring-data-redis來整合SpringRedis
- java程式碼中操作Redis:單機redis、叢集redis(spring+redis整合)JavaRedisSpring
- 整合持續整合工具
- 【springboot】學習4:整合JDBC、整合druid、整合mybatis、整合 SpringSecuritySpring BootJDBCUIMyBatisGse
- SpringBoot整合系列-整合JPASpring Boot
- MyBatis(九) 整合Spring、整合SpringMVCMyBatisSpringMVC
- SSM整合之CRUD環境搭建整合SSM
- ssm整合SSM
- SpringBoot整合系列-整合H2Spring Boot
- RestCloud iPaaS混合整合平臺,資料整合RESTCloud
- SpringBoot整合系列–整合MyBatis-plusSpring BootMyBatis
- 整合學習(一):簡述整合學習
- SSH框架整合配置所需JAR包(SSH整合)框架JAR
- 自動化整合:Pipeline整合Docker容器Docker
- ETL資料整合,RestCloud資料整合平臺RESTCloud
- Win10整合Cortana,Mac何時整合Siri?Win10Mac
- Spring AI與大模型Ollama如何整合整合?SpringAI大模型
- Vue整合UeditorVue
- SSM框架整合SSM框架
- Vuex之整合Vue
- CodePush整合
- 整合SSM框架SSM框架
- Spark整合hiveSparkHive
- Vitis AI 整合AI
- SSH框架整合框架
- OpenStack整合DockerDocker
- QTP整合SikuliQT
- 系統整合
- 整合SwiftLintSwift
- 整合學習
- SSM學習筆記3——整合 SpringMVC、整合SSMSSM筆記SpringMVC
- Mybatis整合Spring(ssm整合待續)-day04MyBatisSpringSSM
- API整合新一代平臺,iPaaS整合平臺API
- 企業如何資料整合?資料整合解決方案
- 五個模型整合模型
- Spring 整合 MyBatisSpringMyBatis
- SSM整合開發SSM
- SpringMVC整合MybatisSpringMVCMyBatis