Spring Boot集成Redis實(shí)戰(zhàn)操作功能
最近在使用Spring Boot,發(fā)現(xiàn)其功能真是強(qiáng)大,可以快速的集成很多的組件功能,非常方便:
今天就來(lái)介紹下,如何集成Redis。
定義
Redis 是一個(gè)高性能的key-value數(shù)據(jù)庫(kù)。它支持存儲(chǔ)的value類型很多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set –有序集合)和hash(哈希類型)。
以下是Redis的一些優(yōu)點(diǎn)。
異???- Redis非???,每秒可執(zhí)行大約110000次的設(shè)置(SET)操作,每秒大約可執(zhí)行81000次的讀取/獲取(GET)操作。
支持豐富的數(shù)據(jù)類型 - Redis支持開(kāi)發(fā)人員常用的大多數(shù)數(shù)據(jù)類型,例如列表,集合,排序集和散列等等。這使得Redis很容易被用來(lái)解決各種問(wèn)題,因?yàn)槲覀冎滥男﹩?wèn)題可以更好使用地哪些數(shù)據(jù)類型來(lái)處理解決。
操作具有原子性 - 所有Redis操作都是原子操作,這確保如果兩個(gè)客戶端并發(fā)訪問(wèn),Redis服務(wù)器能接收更新的值。
多實(shí)用工具 - Redis是一個(gè)多實(shí)用工具,可用于多種用例,如:緩存,消息隊(duì)列(Redis本地支持發(fā)布/訂閱),應(yīng)用程序中的任何短期數(shù)據(jù),例如,web應(yīng)用程序中的會(huì)話,網(wǎng)頁(yè)命中計(jì)數(shù)等。
如何搭建?
一.加入Redis相關(guān)依賴
二、application.properties中加入redis相關(guān)配置
在@Configuration或者集成了這個(gè)注解的注解標(biāo)識(shí)的類中聲明一個(gè)Redis的bean,本例是在入口類上聲明的Bean:
在Controller里注入StringRedisTemplate:
啟動(dòng)瀏覽器訪問(wèn):
以上是手動(dòng)進(jìn)行redis的操作,那如何進(jìn)行自動(dòng)的的緩存操作呢?
在啟動(dòng)類中添加注解
@EnableCaching會(huì)為每個(gè)bean中被 @Cacheable, @CachePut and @CacheEvict修飾的public方法進(jìn)行緩存操作。
緩存的用法
這個(gè)方法在userId相同形同的情況下,第一次調(diào)用的時(shí)候會(huì)執(zhí)行方法,以后每次在調(diào)用的時(shí)候會(huì)讀取緩存中的數(shù)據(jù)。
緩存的注解介紹:
@Cacheable
這個(gè)注解,會(huì)每次先檢查是否執(zhí)行過(guò)這個(gè)方法,在從緩存數(shù)據(jù)庫(kù)中查看key是否相等,如果找到了,從緩存中讀取,沒(méi)有匹配的那么執(zhí)行該方法,將結(jié)果緩存。
緩存都是通過(guò)key-value進(jìn)行儲(chǔ)存的,value或cacheNames必須指定(value是cacheNames的別名),指定多個(gè)value用(value = {"value1", "value2"})
如果沒(méi)有指定key,spring會(huì)提供一個(gè)默認(rèn)的KeyGenerator,這個(gè)KeyGenerator根據(jù)參數(shù)生成key,如果方法沒(méi)有參數(shù)返回KeyGenerator.EMPTY,如果有一個(gè)參數(shù)返回這個(gè)實(shí)例,如果有多個(gè)參數(shù)返回包含這些參數(shù)的SimpleKey??梢酝ㄟ^(guò)繼承CachingConfigurerSupport自己指定KeyGenerator,類上加@Configuration注解。也可以像上面那樣自己指定key,需要了解SPEL表達(dá)式。
多線程的情況下,可能同時(shí)會(huì)有多個(gè)線程同時(shí)進(jìn)入一個(gè)沒(méi)被緩存過(guò)的方法,這樣會(huì)導(dǎo)致多個(gè)線程都會(huì)執(zhí)行一遍方法,sync="true"會(huì)將第一次計(jì)算返回值的這個(gè)方法lock,計(jì)算完成后將結(jié)果緩存
備注:Redis最為常用的數(shù)據(jù)類型主要有以下:
- String
- Hash
- List
- Set
- Sorted set
- pub/sub
- Transactions
總結(jié)
以上所述是小編給大家介紹的Spring Boot集成Redis實(shí)戰(zhàn)操作功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- spring boot+spring cache實(shí)現(xiàn)兩級(jí)緩存(redis+caffeine)
- spring boot整合redis實(shí)現(xiàn)shiro的分布式session共享的方法
- 通過(guò)Spring Boot + Mybatis + Redis快速搭建現(xiàn)代化Web項(xiàng)目
- SpringBoot項(xiàng)目中使用redis緩存的方法步驟
- Spring Boot高級(jí)教程之使用Redis實(shí)現(xiàn)session共享
- springboot整合redis進(jìn)行數(shù)據(jù)操作(推薦)
- 詳解spring boot starter redis配置文件
- 詳解Spring boot使用Redis集群替換mybatis二級(jí)緩存
- Spring Boot 基于注解的 Redis 緩存使用詳解
- Spring Boot Redis 集成配置詳解
- springboot整合spring-data-redis遇到的坑
相關(guān)文章
java字符串相加時(shí)的內(nèi)存表現(xiàn)和原理分析
這篇文章主要介紹了java字符串相加時(shí)的內(nèi)存表現(xiàn)和原理分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07基于Java利用static實(shí)現(xiàn)單例模式
這篇文章主要介紹了基于Java利用static實(shí)現(xiàn)單例模式,當(dāng)在多個(gè)線程同時(shí)觸發(fā)類的初始化過(guò)程的時(shí)候static不會(huì)被多次執(zhí)行,下面我們一起進(jìn)入文章看看具體要的原因2022-01-01詳解Java Bellman-Ford算法原理及實(shí)現(xiàn)
Bellman-Ford算法與Dijkstra算法類似,都是以松弛操作作為基礎(chǔ),Bellman-Ford算法是對(duì)所有邊都進(jìn)行松弛操作,本文將詳解Bellman-Ford算法原理及實(shí)現(xiàn),感興趣的可以了解一下2022-07-07利用Java實(shí)現(xiàn)解析網(wǎng)頁(yè)中的內(nèi)容
這篇文章主要為大家詳細(xì)介紹了如何利用Java語(yǔ)言做一個(gè)解析指定網(wǎng)址的網(wǎng)頁(yè)內(nèi)容小應(yīng)用,文中的實(shí)現(xiàn)步驟講解詳細(xì),感興趣的可以嘗試下2022-10-10javaweb 實(shí)現(xiàn)文件下載的方法及實(shí)例代碼
這篇文章主要介紹了javaweb 實(shí)現(xiàn)文件下載的方法的相關(guān)資料,這里提供了實(shí)現(xiàn)代碼,需要的朋友可以參考下2016-11-11