當前位置:首頁 » 文件管理 » springbootredis緩存結果

springbootredis緩存結果

發布時間: 2022-09-21 14:12:50

❶ spring-boot-starter-data-redis 怎樣刪除緩存

使用手機自帶管理器打開c盤::cache文件夾是緩存目錄,建議大家定時清空。:所有temp文件夾

❷ 怎麼看spring-bootspring-data-redis

spring boot對常用的資料庫支持外,對nosql 資料庫也進行了封裝自動化。

redis介紹

Redis是目前業界使用最廣泛的內存數據存儲。相比memcached,Redis支持更豐富的數據結構,例如hashes, lists,
sets等,同時支持數據持久化。除此之外,Redis還提供一些類資料庫的特性,比如事務,HA,主從庫。可以說Redis兼具了緩存系統和資料庫的一些特性,因此有著豐富的應用場景。本文介紹Redis在Spring
Boot中兩個典型的應用場景。

如何使用

1、引入 spring-boot-starter-redis
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
</dependency>

2、添加配置文件
# REDIS (RedisProperties)
# Redis資料庫索引(默認為0)
spring.redis.database=0
# Redis伺服器地址
spring.redis.host=192.168.0.58
# Redis伺服器連接埠
spring.redis.port=6379
# Redis伺服器連接密碼(默認為空)
spring.redis.password=
# 連接池最大連接數(使用負值表示沒有限制)
spring.redis.pool.max-active=8
# 連接池最大阻塞等待時間(使用負值表示沒有限制)
spring.redis.pool.max-wait=-1
# 連接池中的最大空閑連接
spring.redis.pool.max-idle=8
# 連接池中的最小空閑連接
spring.redis.pool.min-idle=0
# 連接超時時間(毫秒)
spring.redis.timeout=0

3、添加cache的配置類
@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport{

@Bean
public KeyGenerator keyGenerator() {
return new KeyGenerator() {
@Override
public Object generate(Object target, Method method, Object... params) {
StringBuilder sb = new StringBuilder();
sb.append(target.getClass().getName());
sb.append(method.getName());
for (Object obj : params) {
sb.append(obj.toString());
}
return sb.toString();
}
};
}

@SuppressWarnings("rawtypes")
@Bean
public CacheManager cacheManager(RedisTemplate redisTemplate) {
RedisCacheManager rcm = new RedisCacheManager(redisTemplate);
//設置緩存過期時間
//rcm.setDefaultExpiration(60);//秒
return rcm;
}

@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {
StringRedisTemplate template = new StringRedisTemplate(factory);
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
template.setValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}

}

3、好了,接下來就可以直接使用了
@RunWith(SpringJUnit4ClassRunner.class)
@(Application.class)
public class TestRedis {

@Autowired
private StringRedisTemplate stringRedisTemplate;

@Autowired
private RedisTemplate redisTemplate;

@Test
public void test() throws Exception {
stringRedisTemplate.opsForValue().set("aaa", "111");
Assert.assertEquals("111", stringRedisTemplate.opsForValue().get("aaa"));
}

@Test
public void testObj() throws Exception {
User user=new User("[email protected]", "aa", "aa123456", "aa","123");
ValueOperations<String, User> operations=redisTemplate.opsForValue();
operations.set("com.neox", user);
operations.set("com.neo.f", user,1,TimeUnit.SECONDS);
Thread.sleep(1000);
//redisTemplate.delete("com.neo.f");
boolean exists=redisTemplate.hasKey("com.neo.f");
if(exists){
System.out.println("exists is true");
}else{
System.out.println("exists is false");
}
// Assert.assertEquals("aa", operations.get("com.neo.f").getUserName());
}
}

以上都是手動使用的方式,如何在查找資料庫的時候自動使用緩存呢,看下面;

4、自動根據方法生成緩存
@RequestMapping("/getUser")
@Cacheable(value="user-key")
public User getUser() {
User user=userRepository.findByUserName("aa");
System.out.println("若下面沒出現「無緩存的時候調用」字樣且能列印出數據表示測試成功");
return user;
}

其中value的值就是緩存到redis中的key

❸ 剛剛用spring boot 並用緩存資料庫redis ,哪裡有比較好的教程呢,菜鳥

首先可以在多台伺服器裝memcached,啟動時分別指定容量和埠
訪問時採用集群方式訪問,只需要spring配置文件裡面配置即可
value可以放任何對象,包括集合
每個鍵值的生命周期可以在放入時獨立設置
類庫可以用spymemcached

數據更新方式可以在後台的定時任務中執行

下面是spring mvc中配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

<bean id="memcachedClient" class="net.spy.memcached.spring.MemcachedClientFactoryBean">
<property name="servers" value="伺服器A:埠,伺服器B:埠,伺服器C:埠" />
<property name="protocol" value="BINARY" />
<property name="transcoder">
<bean class="net.spy.memcached.transcoders.SerializingTranscoder">
<property name="compressionThreshold" value="1024" />
</bean>
</property>
<property name="opTimeout" value="2000" />
<property name="timeoutExceptionThreshold" value="1998" />
<property name="locatorType" value="CONSISTENT" />
<property name="hashAlg">
<value type="net.spy.memcached.DefaultHashAlgorithm">KETAMA_HASH</value>
</property>
<property name="failureMode" value="Redistribute" />
<property name="useNagleAlgorithm" value="false" />
</bean>

❹ SpringBoot進階之緩存中間件Redis

大家好,一直以來我都本著 用最通俗的話理解核心的知識點, 我認為所有的難點都離不開 「基礎知識」 的鋪墊

「大佬可以繞過 ~」

本節給大家講講 java的SpringBoot框架」 , 之前我們學習的都是java的基礎知識和底層提供的一些能力,我們日常工作都是在寫介面。在我們在產品開發中,一般我們都會選擇比較穩定的框架來幫我們加速開發,不會自己去造輪子,而在java眾多框架中,spring框架表現的非常好,大部分公司都會首選它作為開發框架,而至今,大部分企業都是以 springboot 來構建項目了,一個穩健的系統需要引入穩定的技術~

如果你是一路看過來的,很高興你能夠耐心看完。前幾期都是帶大家學習了 SpringBoot 的基礎使用以及集成 mybatis 開發,這也是我們寫業務的基礎,如果你還不熟悉這些,請先看完它們。接下來的幾期內容將會帶大家進階使用,會先講解基礎 中間件 的使用和一些場景的應用,或許這些技術你聽說過,沒看過也沒關系,我會帶大家一步一步的入門,耐心看完你一定會有 收獲 ,本期將會給大家講解最熱門的緩存中間件技術 Redis ,同樣的,我們集成到 Springboot 中。最近github可能會被牆,所以我把源碼放到了國內gitee上,本節我們依然使用上期的代碼

Redis 是由義大利人Salvatore Sanfilippo(網名:antirez)開發的一款內存高速緩存資料庫。全稱叫 Remote Dictionary Server(遠程數據服務) 是由 C語言 編寫的,Redis是一個 key-value 存儲系統,它支持豐富的數據類型,如: string、list、set、zset(sorted set)、hash

它本質上是一種鍵值對資料庫,我們之前學習的 mysql 它是持久層的關系型資料庫,而 redis 它的存儲主要存在 內存 中。我們都知道在 內存 中的數據讀取是非常快的,就好比你把一個變數存到磁碟讀取和直接放到代碼中運行,肯定是在代碼中拿到的速度快,因為運行時期,都是直接存到內存的。

給大家總結一下:

有了基本的概念之後,我們下面進行環境搭建,在學習階段,安裝 redis 很簡單,生產環境一般我們也會選擇雲產品,一切為了服務保障,雖說它只是做緩存用,但也是系統的一把 保護傘

如果你是 mac 用戶,你可以運行如下命令:

安裝完成後會提示你運行命令,運行即可。

win 用戶也很簡單,直接下載 redis 軟體,雙擊運行即可,運行之後它會有一個小方塊的圖案,和 locahost:6379 的log,說明運行成功了。初始階段沒有配置的 redis 默認 host 就是本地, port 就是 6379 , 而且是 沒有密碼 就可以訪問的。

推薦一個客戶端軟體 Redis Desktop Manager ,它是 redis 的客戶端界面軟體,方便麵我們學習的時候 清理緩存 使用,生產慎連。

我們不給大家講它的基本命令使用,它也有語法,可以通過類似命令執行,如果想學習的小夥伴,可以自行搜索。本期重點內容是在 sprinboot 中的使用,我們平時開發不可能是去命令行里敲的,都是代碼里執行,而目前市面上有很多封裝好的庫,我們可以直接調用它的方法,很方便的就可以操作它了,不用記一些繁瑣的命令,下面我們就實際操作一下:

修改 pom.xml

修改 application.yml :

redis 默認是有 16 個庫,不是 15 個啊,從 0 開始算的,我們隨便連一個

通過代碼很好理解, 首先需要引入 StringRedisTemplate ,然後需要設置一個 key ,那麼思考一下,這個 key 允許重復嗎

我們進客戶端看一下,發現 key 還是只有一個,但是值變成了新的值了,所以可以得知 key 是唯一的,我們重新設置的時候相當於刷新了它。

redis 中刪除緩存有兩種方式,一種是自我消亡,也就是 過期 銷毀,還有有一種是 主動 銷毀,我們先看一下,過期時間如何設置

我們設置了 10s 後過期,過完10s後發現,這個```key data``消失了。我們在看看如何主動刪除

我們可以利用 Redis 做一個計數器,實現自增功能,你可以用它做網站訪問統計

通常做法,我們會把它封裝一下,後續使用直接引入封裝好的即可,把它直接交給 Springboot容器 管理

其實這個類,你還可以繼續進一步封裝,比如約束 key 的規范,約束過期時間,約束數據類型等等,這一切也都是為了規范和後期維護,防止濫用緩存

緩存的主要場景是用於解決熱點數據問題,因為這些數據是訪問頻率比較高的,當大量的請求進來, mysql 可能壓力很大,這樣一來,數據查詢效率就很慢,用戶肯不高興等了,這樣用戶體驗很不好。所以我們一般做法,都是把這些熱點數據放到緩存里,因為緩存讀取速度很快。當有新數據的時候,我們再及時更新它,一般流程是先查詢緩存,查到了直接返回緩存數據,查不到再走資料庫,然後再刷回緩存。

但是並發足夠大的時候,還是會暴露出很多問題,比如面試常問的一些高頻問題 緩存雪崩、緩存穿透、緩存雪崩 ,這些問題後邊會給大家專門講,和如何去防範。所以總的來說,引入任何一門技術並不是萬事大吉,還需我們不斷的在實踐中積累經驗

本期到這里就結束了,總結一下,我們了解了什麼是 redis ,以及在 springboot 中如何去使用它們,很簡單,沒什麼復雜的東西。但這里想多說一點的是,緩存的設計卻是很復雜的,因為工具是死的,人是活的,我們如何正確設計,需要我們在項目中不斷的積累。

我們之前教大家查詢列表數據,都是所有數據返回,還沒有教大家如何去做分頁,下期將帶大家學習一下 mybatis 分頁插件的使用 ,下期不見不散, 關注我,不迷路~

❺ springboot redis怎麼判斷緩存中有數據

Redis是目前業界使用最廣泛的內存數據存儲。相比memcached,Redis支持更豐富的數據結構,例如hashes,lists,sets等,同時支持數據持久化。除此之外,Redis還提供一些類資料庫的特性,比如事務,HA,主從庫。可以說Redis兼具了緩存系統和資料庫

❻ spring-boot-starter-data-redis能否獲取動態監控信息

1、redis功能是提供緩存服務的,spring與各中間件集成後一般也只提供中間件自己的功能。
2、cpu、內存等狀態監控並不是redis的功能,所以你不能通過它來查看。
3、你可以通過actuator來查看cpu、內存等信息。

❼ spring boot + redis 實現session共享分析

HttpSession是由servelet容器進行管理的。而我們常用的應用容器有 Tomcat/Jetty等, 這些容器的HttpSession都是存放在對應的應用容器的內存中,在分布式集群的環境下,通常我們使用Nginx或者LVS、Zuul等進行反向代理和負載均衡,因此用戶請求是由一組提供相同服務的應用來進行處理,而用戶最終請求到的服務由Nginx和LVS、Zuul進行確定。

那麼問題就來了,我們怎樣保證多個相同的應用共享同一份session數據?對於這種問題Spring為我們提供了Spring Session進行管理我們的HttpSession。項目地址: http://projects.spring.io/spring-session/

1.添加Spring session的包,而Spring session 是將HttpSession存放在Redis中,因此需要添加Redis的包。我們這里是用了Spring boot進行配置Rdies。

2.使用@EnableRedisHttpSession註解進行配置啟用使用Spring session。

3.配置我們的Redis鏈接,我們這里使用的是Spring Boot作為基礎進行配置,因此我們只需要在YML或者Properties配置文件添加Redis的配置即可。

4.創建請求的控制器來進行確定我們是否啟用Session 共享。

5.將當前的工程拷貝一份.

通過上面請求顯示的結果我們可以看出使用的是同一個Seesion,我們也可以查看下存在Redis中的Session。我這里使用RDM進行查看,我們還可以查看Session的屬性。從圖可以看出我們存進入的url屬性。

我們從啟動Spring Session的配置註解@EnableRedisHttpSession開始。
1.我們可以通過@EnableRedisHttpSession可以知道,Spring Session是通過RedisHttpSessionConfiguration類進行配置的。

2.我們在RedisHttpSessionConfiguration類種的注釋可以知道,該類是用於創建一個過濾SessionRepositoryFilter。

3.探究下SessionRepositoryFilter類是在哪裡創建創建過程作用。
(1)哪裡創建:
通過搜索RedisHttpSessionConfiguration發現SessionRepositoryFilter的創建不是在RedisHttpSessionConfiguration,而是在父類中創建。

(2)SessionRepositoryFilter創建過程:

這里我們可以總結下:
Redis確保鏈接的情況下。
1.創建sessionRedisTemplate
2.創建
3.創建SessionRepositoryFilter

(3)SessionRepositoryFilter的作用:
SessionRepositoryFilter的主要作用接管Seession的管理。我們可以從下面幾個點知道為什麼?

4.我們研究下是怎樣接管Session?

(1)存儲Session的過程

當調用SessionRepositoryFilter.this.sessionRepository.save(session)完畢後,會判斷當前的SessionId是否與請求的中的Cookie中SessionId一致,若不一致的情況下會調用onNewSession()方法,我們可以通過配置類的可以看到使用的是
CookieHttpSessionStrategy();
從CookieHttpSessionStrategy.onNewSession()方法可以看到是將SessionId寫到Cookie中。

(2)獲取Session的過程

我們根據源碼的分析可以知道:
1.Spring Session 是通過SessionRepositoryFilter過濾器進行攔截,然後通過繼承HttpServletRequestWrapper進行管理Session。

2.Spring Session 為我們提供了3中存放的策略而每種策略提供對應的註解啟動。分別為:
(1)NoSql形式的MongoDb:@EnableMongoHttpSession
(2)持久化形式的JDBC:@EnableJdbcHttpSession
(3)緩存形式的Redis:@EnableRedisHttpSession

3.Spring Session 共享Session過程:
(1)先過程過濾器存儲將SessionID存放到本地的Cookie 和Redis中。
如果本地沒有啟用Cookie的情況下,Spring Session也就不能使用。
(2)獲取Session的時候,先從請求中獲取Session,Session不為空的情況下直接返回Session,若當前的Session為空的情況下,從Cookie中獲取SessionId,判斷SessionId不為空,再從Redis中獲取Session,若從Redis中獲取到的Session不為空將Session存放到請求中,再返回Session,如果從Redis中獲取的Session為空,再創建新的Session並且添加到請求中,後返回Session。

❽ SpringBoot集成Redis來實現緩存技術方案有哪些

首先可以在多台伺服器裝memcached,啟動時分別指定容量和埠 訪問時採用集群方式訪問,只需要spring配置文件裡面配置即可 value可以放任何對象,包括集合 每個鍵值的生命周期可以在放入時獨立設置 類庫可以用spymemcached 數據更新方式可以

熱點內容
我的世界迪士尼神奇寶貝伺服器地址 發布:2024-10-10 09:03:02 瀏覽:556
win7存儲並顯示 發布:2024-10-10 09:02:30 瀏覽:551
oracle資料庫導出 發布:2024-10-10 08:34:56 瀏覽:363
androidn特性 發布:2024-10-10 08:30:41 瀏覽:729
存儲過程修改記錄 發布:2024-10-10 08:23:28 瀏覽:58
呱呱編程 發布:2024-10-10 08:12:54 瀏覽:895
androidoa 發布:2024-10-10 08:07:14 瀏覽:894
安卓手機怎麼關掉開了的游戲 發布:2024-10-10 07:50:14 瀏覽:681
idea新建java類 發布:2024-10-10 07:50:12 瀏覽:71
教務處的賬號和密碼是什麼 發布:2024-10-10 07:47:51 瀏覽:790