redis緩存

来源:https://www.cnblogs.com/zhuqianfang-fox/archive/2019/11/20/11898769.html
-Advertisement-
Play Games

分散式項目的常見問題:對於首頁每天有大量的人訪問,對資料庫造成很大的訪問壓力,甚至是癱瘓。那如何解決呢?我們通常的做法有兩種:一種是數據緩存、一種是網頁靜態化。 redis是一款開源的Key-Value資料庫,運行在記憶體中,由ANSIC編寫。企業開發通常採用redis來實現緩存。同類的產品有Memc ...


分散式項目的常見問題:對於首頁每天有大量的人訪問,對資料庫造成很大的訪問壓力,甚至是癱瘓。那如何解決呢?我們通常的做法有兩種:一種是數據緩存、一種是網頁靜態化。

redis是一款開源的Key-Value資料庫,運行在記憶體中,由ANSIC編寫。企業開發通常採用redis來實現緩存。同類的產品有Memcache、Mongodb等

Jedis是Redis官方推出的一捲面向Java的客戶端,提供了很多介面供java語言調用。可以在Redis官網下載,當然還有一些開源愛好者提供的客戶端,如Jredis、SRP等等,推薦使用Jedis

SpringDataRedis是spring大家族的一部分,提供了在Spring應用中通過簡單的配置訪問redis服務,對redis底層開發包

(Jedis,  JRedis, and RJC)進行了高度封裝,RedisTemplate提供了redis各種操作、異常處理及序列化,支持發佈訂閱,並對spring 3.1 cache進行了實現。

spring-data-redis針對jedis提供瞭如下功能:
1.連接池自動管理,提供了一個高度封裝的“RedisTemplate”
2.針對jedis客戶端中大量api進行了歸類封裝,將同一類型操作封裝為operation介面
ValueOperations:簡單K-V操作
SetOperations:set類型數據操作
ZSetOperations:zset類型數據操作
HashOperations:針對map類型的數據操作
ListOperations:針對list類型的數據操作

Spring Data Redis入門小demo:

1. 創建Maven工程

2. 引入Spring、Redis依賴

<!--spring依賴-->
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.9</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>
        <!--springDataRedis依賴-->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.8.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-redis</artifactId>
            <version>1.7.2.RELEASE</version>
        </dependency>
    </dependencies>

3. 在src/main/resources下創建properties文件夾,建立redis-config.properties

redis.host=127.0.0.1 
redis.port=6379 
redis.pass=     
redis.database=0 
redis.maxIdle=300 
redis.maxWait=3000 
redis.testOnBorrow=true 

maxIdle :最大空閑數

maxWaitMillis:連接時的最大等待毫秒數

testOnBorrow:在提取一個jedis實例時,是否提前進行驗證操作;如果為true,則得到的jedis實例均是可用的

4. 在src/main/resources下創建spring文件夾 ,創建applicationContext-redis.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <context:property-placeholder location="classpath*:*.properties" />
    <!-- redis 相關配置 -->
    <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <property name="maxIdle" value="${redis.maxIdle}" />
        <property name="maxWaitMillis" value="${redis.maxWait}" />
        <property name="testOnBorrow" value="${redis.testOnBorrow}" />
    </bean>
    <bean id="JedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
          p:host-name="${redis.host}" p:port="${redis.port}" p:password="${redis.pass}" p:pool-config-ref="poolConfig"/>

    <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
        <property name="connectionFactory" ref="JedisConnectionFactory" />
    </bean>
</beans>

 

註意:

在數據發生變化時,需要將緩存數據清空,這樣再次查詢時才能獲取最新的數據

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 首先需要下載arm linux gcc的安裝包 這裡提供一個5.4.0版本的安裝包,如有需要自行下載。 下載鏈接:https://pan.baidu.com/s/1prpdmVNWBFzg79OXQsyt6A 提取碼:fH20 安裝步驟 獲得最高許可權以便能在/usr文件夾下進行操作 sudo su ...
  • 設置好代理後 apt-get install fcitx 後 仍然看不到 語言欄 可能是 在設置fcitx時 的字體太小了 輸入法配置 ->外觀->字體 加大 即可 ...
  • 下麵是在使用fuse3 編譯bbfs 過程中一些參數,用於備忘: FUSE_CFLAGS="-I/usr/local/include/fuse3" FUSE_LIBS="-L/usr/local/lib/x86_64-linux-gnu -lfuse3 -lpthread -ldl" ./confi ...
  • Spark SQL主要提供了兩個工具來訪問hive中的數據,即CLI和ThriftServer。前提是需要Spark支持Hive,即編譯Spark時需要帶上hive和hive-thriftserver選項,同時需要確保在$SPARK_HOME/conf目錄下有hive-site.xml配置文件(可以 ...
  • sqlserver 使用函數實現分隔字元串 create function dbo.fn_split ( @str_source nvarchar(max), @split_char nvarchar(100) ) returns @temp table ( id int primary key i ...
  • 上一篇,我們介紹了 ES 文檔的基本 CURE 和批量操作。我們都知道倒排索引是搜索引擎非常重要的一種數據結構,什麼是倒排索引,倒排索引的原理是什麼。 1 索引過程 在講解倒排索引前,我們先瞭解索引創建,下圖是 Elasticsearch 中數據索引過程的流程。 從上圖可以看到,文檔未在 ES 中進 ...
  • sqlserver 用於查看當前資料庫所有表占用空間大小的存儲過程 create procedure dbo.proc_getsize as begin create table #temp ( t_id int primary key identity(1,1), t_name sysname, ...
  • 摸索了很久,在此也感謝阿裡雲售後兄弟的支持。 1、 首先得要有個阿裡雲賬號,已經購買RDS資料庫(本文針對SQL Server)且已經開通阿裡雲OSS服務。 2、 本文檔適用於以下版本的實例: RDS for SQL Server 2012/2016 Web版 RDS for SQL Server ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...