欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring Boot示例代碼整合Redis詳解

 更新時(shí)間:2022年06月29日 10:01:21   作者:程序員阿紅  
SpringBoot對(duì)常用的數(shù)據(jù)庫(kù)支持外,對(duì)NoSQL 數(shù)據(jù)庫(kù)也進(jìn)行了封裝自動(dòng)化,下面這篇文章主要給大家介紹了關(guān)于springboot使用redis的詳細(xì)步驟,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

Redis 簡(jiǎn)介

Redis 是完全開源的,遵守 BSD 協(xié)議,是一個(gè)高性能的 key-value 數(shù)據(jù)庫(kù)。

Redis 與其他 key - value 緩存產(chǎn)品有以下三個(gè)特點(diǎn):

  • Redis支持?jǐn)?shù)據(jù)的持久化,可以將內(nèi)存中的數(shù)據(jù)保存在磁盤中,重啟的時(shí)候可以再次加載進(jìn)行使用。
  • Redis不僅僅支持簡(jiǎn)單的key-value類型的數(shù)據(jù),同時(shí)還提供list,set,zset,hash等數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)。
  • Redis支持?jǐn)?shù)據(jù)的備份,即master-slave模式的數(shù)據(jù)備份。

Redis 優(yōu)勢(shì)

性能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。

豐富的數(shù)據(jù)類型 – Redis支持二進(jìn)制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 數(shù)據(jù)類型操作。

原子 – Redis的所有操作都是原子性的,意思就是要么成功執(zhí)行要么失敗完全不執(zhí)行。單個(gè)操作是原子性的。

多個(gè)操作也支持事務(wù),即原子性,通過MULTI和EXEC指令包起來。

豐富的特性 – Redis還支持 publish/subscribe, 通知, key 過期等等特性。

Redis與其他key-value存儲(chǔ)有什么不同

Redis有著更為復(fù)雜的數(shù)據(jù)結(jié)構(gòu)并且提供對(duì)他們的原子性操作,這是一個(gè)不同于其他數(shù)據(jù)庫(kù)的進(jìn)化路徑。Redis的數(shù)據(jù)類型都是基于基本數(shù)據(jù)結(jié)構(gòu)的同時(shí)對(duì)程序員透明,無需進(jìn)行額外的抽象。

Redis運(yùn)行在內(nèi)存中但是可以持久化到磁盤,所以在對(duì)不同數(shù)據(jù)集進(jìn)行高速讀寫時(shí)需要權(quán)衡內(nèi)存,因?yàn)閿?shù)據(jù)量不能大于硬件內(nèi)存。在內(nèi)存數(shù)據(jù)庫(kù)方面的另一個(gè)優(yōu)點(diǎn)是,相比在磁盤上相同的復(fù)雜的數(shù)據(jù)結(jié)構(gòu),在內(nèi)存中操作起來非常簡(jiǎn)單,這樣Redis可以做很多內(nèi)部復(fù)雜性很強(qiáng)的事情。同時(shí),在磁盤格式方面他們是緊湊的以追加的方式產(chǎn)生的,因?yàn)樗麄儾⒉恍枰M(jìn)行隨機(jī)訪問。

添加Redis依賴包

在項(xiàng)目的pom.xml中添加如下:

<!-- redis依賴包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

配置Redis數(shù)據(jù)庫(kù)連接

在application.properties中配置redis數(shù)據(jù)庫(kù)連接信息,如下:

#redis配置
#Redis服務(wù)器地址
spring.redis.host=127.0.0.1
#Redis服務(wù)器連接端口
spring.redis.port=6379
#Redis數(shù)據(jù)庫(kù)索引(默認(rèn)為0)
spring.redis.database=0 
#連接池最大連接數(shù)(使用負(fù)值表示沒有限制)
spring.redis.jedis.pool.max-active=50
#連接池最大阻塞等待時(shí)間(使用負(fù)值表示沒有限制)
spring.redis.jedis.pool.max-wait=3000
#連接池中的最大空閑連接
spring.redis.jedis.pool.max-idle=20
#連接池中的最小空閑連接
spring.redis.jedis.pool.min-idle=2
#連接超時(shí)時(shí)間(毫秒)
spring.redis.timeout=5000

編寫Redis操作工具類

將RedisTemplate實(shí)例包裝成一個(gè)工具類,便于對(duì)redis進(jìn)行數(shù)據(jù)操作。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit;
@Component
public class RedisUtils {
  @Autowired
  private RedisTemplate redisTemplate;
  /**
  * 讀取緩存
  *
  * @param key
  * @return
  */
  public Object get(final String key) {
    return redisTemplate.opsForValue().get(key);
 }
  /**
  * 寫入緩存
  */
  public boolean set( String key, Object value) {
    boolean result = false;
    try {
      redisTemplate.opsForValue().set(key, value,1, TimeUnit.DAYS);
      result = true;
   } catch (Exception e) {
      e.printStackTrace();
   }
    return result;
 }
  /**
  * 更新緩存
  */
  public boolean getAndSet(final String key, String value) {
    boolean result = false;
    try {
      redisTemplate.opsForValue().getAndSet(key, value);
      result = true;
   } catch (Exception e) {
         e.printStackTrace();
   }
    return result;
 }
  /**
  * 刪除緩存
  */
  public boolean delete(final String key) {
    boolean result = false;
    try {
      redisTemplate.delete(key);
      result = true;
   } catch (Exception e) {
      e.printStackTrace();
   }
    return result;
 }
}

測(cè)試

寫一個(gè)測(cè)試用例類來完成對(duì)redis的整合

@RunWith(SpringRunner.class)
@SpringBootTest
class Springboot02MybatisApplicationTests {
  @Autowired
  private RedisUtils redisUtils;
  @Autowired
  private CommentMapper commentMapper;
  @Test
  public void setRedisData() {
   redisUtils.set("article_1",articleMapper.selectByPrimaryKey(1));
    System.out.println("success");
 }
  @Test
  public void getRedisData() {
    Article article = (Article) redisUtils.get("article_1");
    System.out.println(article);
 }

到此這篇關(guān)于Spring Boot示例代碼整合Redis詳解的文章就介紹到這了,更多相關(guān)Spring Boot Redis內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論