1. 程式人生 > 其它 >Redis快取機制

Redis快取機制

技術標籤: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)

關閉Redis的兩種方式

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的持久化和記憶體策略