記錄使用redis作為專案快取踩的坑

2021-08-28 04:54:29 字數 2566 閱讀 6564

1.首先,說明所使用的環境:

org.springframework.data

spring-data-redis

1.6.2.release

redis.clients

jedis

2.8.0

spring採用的3.1.2release,

2.由於專案中使用到了redis,所以為了減輕資料庫壓力,最近打算把部分訪問頻率較高的資料放到redis中,並以redis作為專案快取,開始爬坑了.....

3.步驟

xmlns:cache=""

/spring-cache.xsd

第二步:配置檔案

3.2.1 redis的連線池配置

3.2.2 redis連線工廠

3.2.3 redis的操作模板[將redis給spring去管理]

3.2.4 可以自定義乙個工具類,交給spring的ioc管理

3.2.5 redis的快取管理類的配置

xxyq_globalset

play_repeat_state

get_qtxx_lhpl

3.2.6 最後一步:開啟快取的註解掃瞄:

注意: cache-manager的預設值是cachemanager,如果你的快取管理類是cachemanager,那麼 cache-manager屬性可省略

至此,以redis作為專案快取基本完成,下面記錄一下桑常用註解的各個屬性的含義:

4. cache註解介紹@cacheable,@cacheput,@cacheevict

4.1  @cacheable註解的配置與用法

@cacheable主要是針對方法配置,根據方法請求引數對其結果進行快取,注意,快取的是結果 ----- 即方法的返回值

@cacheable作用在方法上,如果快取中有值的話,就不會去呼叫方法,直接從快取中獲取值返回(類似於get操作)

主要引數

引數含義

示例value

快取的名稱,在 spring 配置檔案[快取管理類中,本文是在cachemanager]中定義,必須指定至少乙個

@cacheable(value=」mycache」) 或者 

@cacheable(value=

key快取的key值,可為空,如果指定要按照 spel 表示式編寫,如果不指定,則預設按照方法的所有引數進行組合

@cacheable(value=」testcache」,key=」#username」)

condition

快取的條件,可以為空,使用 spel 編寫,返回 true 或者 false,只有為 true 才進行快取

@cacheable(value=」testcache」,condition=」#username.length()>2」)

4.2   @cacheput註解的配置與用法

@cacheput根據方法的請求引數對其結果進行快取

每次請求會先呼叫方法,然後將返回值進行快取(類似於update操作)

4.3   @cacheevict註解的配置與用法

@cachevict,能夠根據一定的條件對快取進行清空(類似於delete操作)

主要引數

引數含義

示例value

快取的名稱,在 spring 配置檔案中定義,必須指定至少乙個

@cachevict(value=」mycache」) 或者 

@cachevict(value=

key快取的 key,可以為空,如果指定要按照 spel 表示式編寫,如果不指定,則預設按照方法的所有引數進行組合

@cachevict(value=」testcache」,key=」#username」)

condition

快取的條件,可以為空,使用 spel 編寫,返回 true 或者 false,只有為 true 才清空快取

@cachevict(value=」testcache」,

condition=」#username.length()>2」)

allentries

是否清空所有快取內容,預設為 false,如果指定為 true,則方法呼叫後將立即清空所有快取

@cachevict(value=」testcache」,allentries=true)

beforeinvocation

是否在方法執行前就清空,預設為 false,如果指定為 true,則在方法還沒有執行的時候就清空快取,預設情況下,如果方法執行丟擲異常,則不會清空快取

@cachevict(value=」testcache」,beforeinvocation=true)

使用Redis作為LRU快取

當 redis 作為快取使用時,當你新增新的資料時,有時候很方便使 redis 自動 老的資料。lru 實際上是被唯一支援的資料移除方法。redis 的 maxmemory 指令,用於限制記憶體使用到乙個固定的容量,也包含深入 redis 使用的 lru 演算法,乙個近似準確的 lru。maxmem...

Django中,使用redis作為快取

已有django專案,在其中設定以redis為快取。1 安裝django redis pip install django redis 2 在settings裡面配置cache設定 caches 3 設定好後可以在shell中測試一下 1 在終端中啟動shell python manage.py s...

配置Redis作為快取

將 redis 用作快取時,如果記憶體空間用滿,就會自動驅逐老的資料。預設情況下 memcached 就是這種方式,大部分開發者都比較熟悉。lru是redis唯一支援的 演算法.本文詳細介紹用於限制最大記憶體使用量的maxmemory指令,並深入講解 redis 所使用的近似lru演算法。maxme...