springboot---整合redis

pom.xml新增

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>

代碼結構如下
在這里插入圖片描述
其中redis.yml是連接redis的配置文件,RedisConfig.java是java配置類,RedisC.java是操作redis的java類

隨著Spring Boot2.x的到來,支持的組件越來越豐富,也越來越成熟,其中對Redis的支持不僅僅是豐富了它的API,更是替換掉底層Jedis的依賴,取而代之換成了Lettuce(生菜)
Lettuce和Jedis的都是連接Redis Server的客戶端程序。Jedis在實現上是直連redis server,多線程環境下非線程安全,除非使用連接池,為每個Jedis實例增加物理連接。Lettuce基于Netty的連接實例(StatefulRedisConnection),可以在多個線程間并發訪問,且線程安全,滿足多線程環境下的并發訪問,同時它是可伸縮的設計,一個連接實例不夠的情況也可以按需增加連接實例。

代碼如下

redis.yml

#redis
redis:#redis機器iphostname: 127.0.0.1#redis端口port: 6379#redis密碼password:#redis超時時間(毫秒),如果不設置,取默認值2000timeout: 10000
#最大空閑數maxIdle: 300
#連接池的最大數據庫連接數。設為0表示無限制,如果是jedis 2.4以后用redis.maxTotal
#maxActive=600
#控制一個pool可分配多少個jedis實例,用來替換上面的redis.maxActive,如果是jedis 2.4以后用該屬性maxTotal: 1000
#最大建立連接等待時間。如果超過此時間將接到異常。設為-1表示無限制。maxWaitMillis: 1000
#連接的最小空閑時間 默認1800000毫秒(30分鐘)minEvictableIdleTimeMillis: 300000
#每次釋放連接的最大數目,默認3numTestsPerEvictionRun: 1024
#逐出掃描的時間間隔(毫秒) 如果為負數,則不運行逐出線程, 默認-1timeBetweenEvictionRunsMillis: 30000
#是否在從池中取出連接前進行檢驗,如果檢驗失敗,則從池中去除連接并嘗試取出另一個testOnBorrow: true
#在空閑時檢查有效性, 默認falsetestWhileIdle: true#redis集群配置
#spring.cluster.nodes=192.168.1.1:7001,192.168.1.1:7002,192.168.1.1:7003,192.168.1.1:7004,192.168.1.1:7005,192.168.1.1:7006
#spring.cluster.max-redirects=3#哨兵模式
#sentinel.host1=192.168.1.1
#sentinel.port1=26379#sentinel.host2=192.168.1.2
#sentinel.port2=26379

RedisConfig.java

package com.example.smybatis.configurer;import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;import java.io.Serializable;@Configuration
@AutoConfigureAfter(RedisAutoConfiguration.class)
public class RedisConfig {@Beanpublic RedisTemplate<String, Serializable> redisCacheTemplate(LettuceConnectionFactory redisConnectionFactory) {RedisTemplate<String, Serializable> template = new RedisTemplate<>();template.setKeySerializer(new StringRedisSerializer());template.setValueSerializer(new GenericJackson2JsonRedisSerializer());template.setConnectionFactory(redisConnectionFactory);return template;}
}

RedisC.java

package com.example.smybatis.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class RedisC {@Autowiredprivate StringRedisTemplate stringRedisTemplate;//添加@GetMapping(value="/redisAdd")public void saveRedis(){stringRedisTemplate.opsForValue().set("a","test");}//獲取@GetMapping(value="/redisGet")public String getRedis(){return stringRedisTemplate.opsForValue().get("a");}
}

我們通過cmd重新打開一個客戶端重新連接redis,執行操作,我們啟動服務,瀏覽器輸入http://localhost:1111/redisGet,如下圖,我們看到原本redis服務器key是空的,執行操作之后,多了一個a
在這里插入圖片描述
瀏覽器輸入http://localhost:1111/redisGet,就能看到我們剛才插入的key為a對應的值了
在這里插入圖片描述
ok,操作完成

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/250094.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/250094.shtml
英文地址,請注明出處:http://en.pswp.cn/news/250094.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[Head First Java] - 簡單的建議程序

參考 - p481、p484 與我對接的業務層使用的是JAVA語言,因此花點時間入門java.下面幾篇博客可能都是關于java的,我覺得在工作中可能會遇到的 簡單的通信 DailyAdviceClient(客戶端程序) import java.io.*; import java.net.*;public class DailyAdviceClient{public void go()…

SQL重復記錄查詢的幾種方法

1 查找表中多余的重復記錄&#xff0c;重復記錄是根據單個字段1 select * from TB_MAT_BasicData1 2 where MATNR in ( select MATNR from TB_MAT_BasicData1 group by MATNR having count(MATNR)>1) 2.表需要刪除重復的記錄&#xff08;重復記錄保留1條&#xff09;&…

Redis 的應用場景

之前講過Redis的介紹&#xff0c;及使用Redis帶來的優勢&#xff0c;這章整理了一下Redis的應用場景&#xff0c;也是非常重要的&#xff0c;學不學得好&#xff0c;能正常落地是關鍵。 下面一一來分析下Redis的應用場景都有哪些。 1、緩存 緩存現在幾乎是所有中大型網站都在…

[Head First Java] - Swing做一個簡單的客戶端

參考 - P487 1. vscode配置java的格式 點擊左下角齒輪 -> 設置 -> 打開任意的setting.json輸入如下代碼 {code-runner.executorMap": {"java": "cd $dir && javac -encoding utf-8 $fileName && java $fileNameWithoutExt"},…

【Nginx】 Nginx實現端口轉發

什么是端口轉發 當我們在服務器上搭建一個圖書以及一個電影的應用&#xff0c;其中圖書應用啟動了 8001 端口&#xff0c;電影應用啟動了 8002 端口。此時如果我們可以通過 localhost:8001 //圖書 localhost:8002 //電影 但我們一般訪問應用的時候都是希望不加端口就訪問…

計算機網絡知識總結

一 OSI與TCP/IP各層的結構與功能&#xff0c;都有哪些協議 OSI的七層體系結構概念清楚&#xff0c;理論也很完整&#xff0c;但是它比較復雜而且不實用。在這里順帶提一下之前一直被一些大公司甚至一些國家政府支持的OSI失敗的原因&#xff1a; OSI的專家缺乏實際經驗&#xff…

使用redis做為MySQL的緩存

介紹 在實際項目中&#xff0c;MySQL數據庫服務器有時會位于另外一臺主機&#xff0c;需要通過網絡來訪問數據庫&#xff1b;即使應用程序與MySQL數據庫在同一個主機中&#xff0c;訪問MySQL也涉及到磁盤IO操作&#xff08;MySQL也有一些數據預讀技術&#xff0c;能夠減少磁盤I…

[Head First Java] - 給線程命名

參考 - P503 public class RunThreads implements Runnable {public static void main (String[] args) {RunThreads runner new RunThreads();Thread alpha new Thread(runner);Thread beta new Thread(runner);alpha.setName("Alpha thread");beta.setName(&qu…

Cortex-M3 的SVC、PendSV異常,與操作系統(ucos實時系統)(轉)

Cortex-M3 的SVC、PendSV異常&#xff0c;與操作系統(ucos實時系統)轉載于:https://www.cnblogs.com/LittleTiger/p/10070824.html

快速排序的C++版

int Partition(int a[], int low, int high) {int x a[high];//將輸入數組的最后一個數作為主元&#xff0c;用它來對數組進行劃分int i low - 1;//i是最后一個小于主元的數的下標for (int j low; j < high; j)//遍歷下標由low到high-1的數{if (a[j] < x)//如果數小于…

springboot---整合shiro

Shiro是一個非常不錯的權限框架&#xff0c;它提供了登錄和權限驗證功能 1.創建數據庫腳本 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0; -- ---------------------------- -- Table structure for module -- ---------------------------- DROP TABLE IF EXISTS module; C…

[Head First Java] - 線程共享數據問題

參考 - P507 1. 說明 兩個線程共享同一份數據,每次使用數據時,需要先判斷其是否在合理范圍每次使用數據完畢使用Thread.sleep函數讓線程阻塞 2.代碼 class BankAccount {private int balance 100;public int getBalance() {return balance;}public void withdraw(int amou…

asp.net中提交表單數據時提示從客戶端(。。。)中檢測到有潛在危險的 Request.Form 值...

看到這個圖是不是很親切熟悉哈&#xff0c;做過。net的肯定都見過哈 已經 將近4年沒碰。net了&#xff0c;今天正好朋友的程序有幾個bug,讓我幫忙修復下&#xff0c;于是我就抱著試試看的心情改了改&#xff0c;改到最后一個問題的時候也就是上面的這個問題&#xff0c;我一看&…

Openresty編寫Lua代碼一例

1.前段時間糾結了很久&#xff0c;一直弄不清lua和tomcat的聯系。一直認為是lua調用tomcat的接口才可使用&#xff0c;后面才明白過來&#xff0c;進入了一個誤區&#xff0c;lua本身就是一門獨立的腳本語言。在openresty里面配置好&#xff0c;即可編寫映射和響應。 下面是自己…

Shiro表結構設計

表設計 開發用戶-角色-權限管理系統&#xff0c;首先我們需要知道用戶-角色-權限管理系統的表結構設計。 在用戶-角色-權限管理系統找那個一般會涉及5張表&#xff0c;分別為&#xff1a; 1.sys_users用戶表 2.sys_roles角色表 3.sys_permissions權限表&#xff08;或資源表&…

[Java核心技術(卷I)] - 簡易的日歷

參考 - P102~P103 1. 目標 生成一個日歷,格式如下圖所示。 ps: 當前的天數需要標記為* 2. 核心 對日歷的變量 import java.time.*; public class CalendarTest{public static void main(String[] args) {LocalDate date LocalDate.now(); // 獲取當前日期int month date…

個人作業——福大微信公眾號使用評測

案例分析&#xff1a;在福州大學公眾號上&#xff0c;我們可以即時使用手機關注福大新聞&#xff0c;查看自身課表、成績等。公眾號可能存在一些小bug影響同學們的用戶體驗。本次作業中&#xff0c;作為一個用戶——福大的學生&#xff0c;將切身體驗該公眾號的功能&#xff0c…

在winform中使用wpf窗體

在winform項目&#xff0c;通過引用dll可以添加WPF窗體&#xff0c;如下 但是如果直接在winform的項目中添加wpf窗體還是有部分問題&#xff0c;圖片的顯示。 直接在XAML界面中用Source屬性設置圖片會出現錯誤。必須通過后臺代碼的方式來實現。 image1.Source GetImageIcon(gl…

shiro---注解

RequiresAuthentication 驗證用戶是否登錄&#xff0c;等同于方法subject.isAuthenticated() 結果為true時。 RequiresUser 驗證用戶是否被記憶&#xff0c;user有兩種含義&#xff1a; 一種是成功登錄的&#xff08;subject.isAuthenticated() 結果為true&#xff09;&…

[Java核心技術(卷I)] - Java中的參數能做什么和不能做什么

1. 參考 - P123 ~ P126 2. 你將學到 Java中對方法參數能做什么和不能做什么 方法不能修改基本數據類型的參數(數值型或布爾型)方法可以改變對象參數的狀態方法不能讓一個對象參數引用一個新的對象 3. 代碼證明 public class ParamTest {public static void main(String[] ar…