Redis快取機制
阿新 • • 發佈:2020-12-11
技術標籤:Redis資料庫優化Javaredis快取javaspring bootmysql
一、redis快取
1、系統優化策略
引入快取機制可以有效的降低使用者訪問物理裝置的頻次,從而提高響應速度,防止高併發
2、如何設計快取
1、快取資料如何儲存?應該採用的什麼樣的資料結構? key-value 因為key的唯一性 2、快取資料的容量的大小如何定義? 動態維護快取資料,將不需要的資料提前刪除。通過LRU演算法/LFU演算法/隨機演算法/TTL演算法 3、快取的資料儲存到記憶體中,但是記憶體有斷電即擦除的特點,如何解決? 定期將記憶體持久化(寫入硬碟中) 4、單臺緩衝伺服器效能不足,所以一般需要搭建叢集(實現高可用) 5、使用c語言開發
3、Linux環境下安裝Redis
Linux安裝軟體,我相信大家是沒有問題的
3.3.1、配置Redis配置檔案
1、修改redis.conf檔案
1)去掉bind 127.0.0.1
2)修改保護模式 protected-mode no(預設yes)
3)開啟後臺執行 daemonize yes (預設no)
3.3.2、Redis伺服器命令
Redis服務需要依賴配置檔案,所以操作Redis命令最好在根目錄
1、啟動命令 (redis-server redis.conf)
2、進入redis客戶端 (redis-cli -p 6379)埠號為預設時可以省略
3、關閉Redis伺服器 (redis-cli -p port shutdown)
4、SpringBoot整合Redis
4.1、匯入依賴
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
</ dependency>
4.2、配置檔案
新建redis.properties
#配置單臺redis
redis.host=ip地址
redis.port=6379
4.3、配置類
新建Redis.Config
@Configuration //標識我是一個配置類, 一般與@Bean的註解連用
@PropertySource("classpath:/properties/redis.properties")
public class RedisConfig {
@Value("${redis.host}")
private String host;
@Value("${redis.port}")
private Integer port;
@Bean
public Jedis jedis(){
return new Jedis(host,port);
}
}
4.4、AOP實現Redis快取
利用AOP可以實現對方法功能的“擴充套件”,實現代買的“解耦”
切面 = 切入點表示式+ 通知方法
4.4.1切入點表示式
1)bean(包名.類名) 攔截bean的所有方法 粗粒度
2)within(包名.類名)掃描某個包下的某個類
3)excution(返回值型別 包名.類名.方法名(引數列表))細粒度
4)@annotation(包名.註解名)細粒度
4.4.2通知方法
通知相互之間沒有順序,每個通知方法都完成特定的功能。
1)before 目標方法執行之前
2)afterReturning 目標方法執行之後
3)afterThrowing 目標方法執行丟擲異常時執行
4)after 目標方法執行異常或返回時執行
5)around 目標方法執行前後都要通知
下一步:Redis的持久化和記憶體策略