1. 程式人生 > >springboot2.x簡單詳細教程--整合Redis實戰(第 九章)

springboot2.x簡單詳細教程--整合Redis實戰(第 九章)

一、分散式快取Redis介紹 


    簡介:講解為什麼要用快取和介紹什麼是Redis,新手練習工具
    

1.什麼是Redis

​ 由c語言編寫的,以鍵值對的形式儲存的非關係資料庫. 快取技術(駐留在記憶體中)      CPU(暫存器) > 記憶體 > 磁碟

​ key:value

​ 支援5種資料型別:

​ String

​ Hash(雜湊表)

​ list

​ set

​ sortedset(zset)

    1、redis官網 https://redis.io/download
    
    2、新手入門redis線上測試工具
:http://try.redis.io/

         edis是所謂的鍵值儲存,通常稱為NoSQL資料庫。鍵值儲存的本質是能夠在鍵記憶體儲一些稱為值的資料。只有當我們知道用於儲存它的確切金鑰時,才可以檢索此資料。我們可以使用命令SET將值“fido”儲存在鍵“server:name”中 

SET server:name "fido"

Redis將永久儲存我們的資料,因此我們稍後可以詢問“金鑰伺服器上儲存的值是什麼:名稱?” 和Redis將回復“fido”: GET server:name => "fido"

 

二、原始碼編譯安裝Redis4.x

 redis安裝可安裝在本地,也可以裝在linux系統上(推薦),可以租一個阿里雲伺服器不是很貴的。
    簡介:使用原始碼安裝Redis4.x和配置外網訪問

    1、快速安裝  https://redis.io/download#installation
            wget http://download.redis.io/releases/redis-4.0.9.tar.gz
          安裝在linux系統上的命令()

         

上傳到linux

 crt中 alt+p

1.  在 usr/local/redis下新建資料夾 redis

mkdir /usr/local/redis

2 將root下的redis移動到 /usr/local/redis 然後解包(不要加z)

mv redis-3.0.7.tar.gz  /usr/local/redis/
cd /usr/local/redis

tar -xvf redis-3.0.7.tar.gz

       我為了方便就安裝在本地了

 1)

2)

    出現如圖所示即可啟動成功

3)想測試的話啟動redis-cli.exe

        啟動服務端:src/redis-server
            啟動客戶端:src/redis-cli

    2、預設是本地訪問的,需要開放外網訪問
        1)開啟redis.conf檔案在NETWORK部分修改
           註釋掉bind 127.0.0.1可以使所有的ip訪問redis
           修改 protected-mode,值改為no

   

 

 

三、SpringBoot2.x整合redis實戰講解

 

    簡介:使用springboot-starter整合reids實戰

        1、官網:https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#boot-features-redis
            叢集文件:https://docs.spring.io/spring-data/data-redis/docs/current/reference/html/#cluster

        2、springboot整合redis相關依賴引入
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-redis</artifactId>
            </dependency>
        
        3、相關配置檔案配置
            #=========redis基礎配置=========
            spring.redis.database=0(0是預設,改成1,2都行)
            spring.redis.host=127.0.0.1
            spring.redis.port=6390
            # 連線超時時間 單位 ms(毫秒)
            spring.redis.timeout=3000

            #=========redis執行緒池設定=========
            # 連線池中的最大空閒連線,預設值也是8
            spring.redis.pool.max-idle=200(-1是不限制的意思

            #連線池中的最小空閒連線,預設值也是0。
            spring.redis.pool.min-idle=200
            
            # 如果賦值為-1,則表示不限制;pool已經分配了maxActive個jedis例項,則此時pool的狀態為exhausted(耗盡)。
            spring.redis.pool.max-active=2000

            # 等待可用連線的最大時間,單位毫秒,預設值為-1,表示永不超時
            spring.redis.pool.max-wait=1000

        4、常見redistemplate種類講解和快取實操(使用自動注入)

            1、注入模板
            @Autowired
            private StirngRedisTemplate strTplRedis

            2、型別String,List,Hash,Set,ZSet
            對應的方法分別是opsForValue()、opsForList()、opsForHash()、opsForSet()、opsForZSet()

補充:

5.啟動訪問

1)

2)

3)redis-cli.exe也可以測試出來


四、Redis工具講解

簡介:高效開發方式 Redis工具類封裝講解和實戰
        1、常用客戶端 https://redisdesktop.com/download

        介紹redis客戶端

1).根據自己的系統安裝對應的客戶端

2)

3)

4)

5)連線成功,點選ok

6)

7)

8)

9)

10)


 

 

總結

 

1, redis 最適合的場景

 

            Redis最適合所有資料in-momory的場景,雖然Redis也提供持久化功能,但實際更多的是一個disk-backed的功能,跟傳統意義上的持久化有比較大的差別,那麼可能大家就會有疑問,似乎Redis更像一個加強版的Memcached,那麼何時使用Memcached,何時使用Redis呢?

         如果簡單地比較Redis與Memcached的區別,大多數都會得到以下觀點:

     1 、Redis不僅僅支援簡單的k/v型別的資料,同時還提供list,set,zset,hash等資料結構的儲存。
     2 、Redis支援資料的備份,即master-slave模式的資料備份。
     3 、Redis支援資料的持久化,可以將記憶體中的資料保持在磁碟中,重啟的時候可以再次載入進行使用。

2、會話快取(Session Cache)

 

         最常用的一種使用Redis的情景是會話快取(session cache)。用Redis快取會話比其他儲存(如Memcached)的優勢在於:Redis提供持久化。當維護一個不是嚴格要求一致性的快取時,如果使用者的購物車資訊全部丟失,大部分人都會不高興的,現在,他們還會這樣嗎?

幸運的是,隨著 Redis 這些年的改進,很容易找到怎麼恰當的使用Redis來快取會話的文件。甚至廣為人知的商業平臺Magento也提供Redis的外掛。

3、全頁快取(FPC)

除基本的會話token之外,Redis還提供很簡便的FPC平臺。回到一致性問題,即使重啟了Redis例項,因為有磁碟的持久化,使用者也不會看到頁面載入速度的下降,這是一個極大改進,類似PHP本地FPC。

再次以Magento為例,Magento提供一個外掛來使用Redis作為全頁快取後端

此外,對WordPress的使用者來說,Pantheon有一個非常好的外掛  wp-redis,這個外掛能幫助你以最快速度載入你曾瀏覽過的頁面。

4、佇列

Reids在記憶體儲存引擎領域的一大優點是提供 list 和 set 操作,這使得Redis能作為一個很好的訊息佇列平臺來使用。Redis作為佇列使用的操作,就類似於本地程式語言(如Python)對 list 的 push/pop 操作。

如果你快速的在Google中搜索“Redis queues”,你馬上就能找到大量的開源專案,這些專案的目的就是利用Redis建立非常好的後端工具,以滿足各種佇列需求。例如,Celery有一個後臺就是使用Redis作為broker,你可以從這裡去檢視。

5,排行榜/計數器

Redis在記憶體中對數字進行遞增或遞減的操作實現的非常好。集合(Set)和有序集合(Sorted Set)也使得我們在執行這些操作的時候變的非常簡單,Redis只是正好提供了這兩種資料結構。所以,我們要從排序集合中獲取到排名最靠前的10個使用者–我們稱之為“user_scores”,我們只需要像下面一樣執行即可:

當然,這是假定你是根據你使用者的分數做遞增的排序。如果你想返回使用者及使用者的分數,你需要這樣執行:

ZRANGE user_scores 0 10 WITHSCORES

Agora Games就是一個很好的例子,用Ruby實現的,它的排行榜就是使用Redis來儲存資料的,你可以在這裡看到。

6、釋出/訂閱

最後(但肯定不是最不重要的)是Redis的釋出/訂閱功能。釋出/訂閱的使用場景確實非常多。我已看見人們在社交網路連線中使用,還可作為基於釋出/訂閱的指令碼觸發器,甚至用Redis的釋出/訂閱功能來建立聊天系統!(不,這是真的,你可以去核實)。

Redis提供的所有特性中,我感覺這個是喜歡的人最少的一個,雖然它為使用者提供如果此多功能。

 

 

五種資料型別的分析

https://blog.csdn.net/xlgen157387/article/details/60958657