Redis相關知識

  1. yum安裝redis
    使用以下命令:直接將redis安裝到Linux服務器(Xshell)中
    yum -y install redis
  2. 啟動redis

    使用以下命令,以后臺運行方式啟動redis

    redis-server /etc/redis.conf &
  3. 操作redis

    使用以下命令啟動redis客戶端

    redis-cli

    具體可操作如下:

    redis-cli:打開客戶端

    set testname zhangsan:存放一個key

    get testname:讀取一個key

  4. 設置遠程連接

    a.將redis配置文件下載到本地;redis配置文件是linux下的/etc/redis.conf

    b.將redis.conf中的“bin 127.0.0.1”注釋掉

    c.將redis.conf中的“protected-mode yes"改為:“protected-mode no"

    d.將修飾后的redis.conf上傳至linux下 的/etc目錄

    e.使用命令”redis-cli shutdown“先關閉redis服務;在使用”redis-server /etc/redis.conf &“開啟redis服務

    f.云服務防火墻或安全策略里面開放redis端口6379

redis有五大基礎數據類型:

String字符串類型(使用較多)
Hash字典類型
List列表類型
Set集合類型
Zset有序集合類型

1.String:字符串類型(使用較多)

簡單動態字符串,它是從鍵值對key-value的形式存儲的,根據key來存儲和獲取value值,它的使用相對來說比較簡單,但是在實際項目中應用非常廣泛:

使用如下:

set k1 v1:添加數據

get k1:查詢數據

strlen k1:查詢字符串的長度

可以使用ex參數來設置字符串的過期時間

set k1 v1 ex 1000 :設置1000s后過期(刪除)

字符串的常見使用場景:

  1. 存放用戶登錄信息
  2. 存放文章詳情和列表信息
  3. 存放和累計網頁的統計信息
  4. …………………………

2.Hash:字典類型

字典類型又被稱為散列類型或者是哈希表類型,它是將一個鍵值(key)和一個特殊的“哈希表”關聯起來,這個“哈希表”包含兩列數據:字段和值,他就相當于Java中的Map<String , Map<String , String>>結構。

假如我們使用字典類型來存儲一篇文章的詳情信息,存儲結構如下:

同理,我們也可以使用字典類型來存儲用戶信息,并且字典類型來存儲此類信息就無需手動序列化和反序列化數據了,所以使用起來更加的方便和高校。

字典類型的使用如下:

hset myhash key1 value1:添加數據

hset myhash key1:查詢數據

字典類型的查詢數據只能一個一個的查詢,不能一次全部查詢完!!

通常情況下,字典類類型會使用數組的方式來存儲相關的數據,但發生哈希沖突時,才會使用鏈表的結構來存儲數據。

添加多個數據:hmset myhset age "16" sex "男"

查詢:hget myhset age

?????????? hget myhset sex

3.List:列表類型

列表類型是一個使用鏈表結構存儲的有序結構,它的元素插入會按照先后順序存儲到鏈表結構中,因此,它的元素操作(插入刪除實時間復雜度為O(1)),所以相對來說速度還是比較塊的,但它的查詢時間復雜度為O(n),因此查詢可能會比較慢。

列表類型使用如下:

lpush list 1 2 3:添加數據

lpop list :獲取并刪除列表的第一個元素

列表的典型使用場景可以有以下兩個:

  1. 消息隊列:列表類型可以使用rpush實現先進先出的功能,同時又可以使用lpop輕松的彈出(查詢并刪除)第一個元素,所以列表類型可以用來實現消息隊列。
  2. 文查列表:對于博客站點來說,用戶和文字都越來越多時,為了加快程序的響應速度,我們可以把用戶的文字存入到list中,因為List是有序的結構,所以這樣又可以完美的實現分頁功能,從而加速了程序的相應速度。

4.Set:集合類型

Set:集合類型是一個無序并唯一的鍵值集合

集合類型使用場景如下:

sadd myset v1 v2 v3 :添加數據

smembers myset :查詢集合中的所有數據

集合類型的經典使用場景如下:

  1. 微博關注我的人和我關注的人都適合用集合存儲,可以保證人員不會重復
  2. 中獎人信息也適合用集合類型存儲,這樣可以保證一個人不會重復中獎

集合類型(Set)和列表類型(List)的區別如下:

  1. 列表可以存儲重復元素,集合只能存儲非重復元素
  2. 列表是按照元素的先后順序存儲元素的,而集合是無序方式存儲元素的

5.Zset:有序集合類型

有序集合類型相比于集合類型多了一個排序屬性score(分值),對于有序集合Zset來說,每個存儲元素相當于兩個值組成的,一個是有序結合的元素值,一個屬排序值,有序集合的存儲元素值也是不能重復的,但分值是可以重復的。

當我們把學生的成績存儲在有序集合中,它的存儲結構如下所示:

有序集合類型的使用如下:

zadd zset1 3 golong 4 sql 1 redis:添加數據

zrange zset 0 -1 :查詢所有數據

有序集合的經典使用場景如下:

  1. 學生成績排名
  2. 粉絲列表,根據關注的先后時間排序

Spring Boot集成Redis的詳細教程:

首先,我們需要創建一個Spring Boot項目。可以使用IDEA或者Eclipse等工具創建,也可以直接在命令行中使用Spring Initializr來創建。這里我們以IDEA為例,步驟如下:

  1. 打開IntelliJ IDEA,點擊"Create New Project"。
  2. 選擇"Spring Initializr",點擊"Next"。
  3. 填寫項目的基本信息,如Group、Artifact、Name等,點擊"Next"。
  4. 選擇需要的依賴,這里我們需要添加"Web"和"Redis"的依賴,點擊"Next"。
  5. 確認項目的設置,點擊"Finish",等待項目創建完成。

三、添加Redis依賴

在項目的pom.xml文件中,添加Spring Boot對Redis的支持。代碼如下:

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

四、配置Redis

在application.properties文件中,配置Redis的相關信息。代碼如下:

spring.redis.host=localhost
spring.redis.port=6379

五、創建Redis配置類

在項目中創建一個配置類,用于配置RedisTemplate。代碼如下:

@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(factory);return template;}
}

六、使用RedisTemplate操作Redis

在需要操作Redis的地方,注入RedisTemplate,然后使用其提供的方法進行操作。代碼如下:

@Service
public class UserService {@Autowiredprivate RedisTemplate<String, Object> redisTemplate;// ...其他方法...
}

七、測試Redis操作

為了測試Redis的操作,我們可以在UserService中添加一個方法,用于向Redis中添加和獲取用戶信息。代碼如下:

@Service
public class UserService {@Autowiredprivate RedisTemplate<String, Object> redisTemplate;// ...其他方法...public void addUser(String key, User user) {redisTemplate.opsForValue().set(key, user);}public User getUser(String key) {return (User) redisTemplate.opsForValue().get(key);}
}

八、啟動Spring Boot應用并測試Redis操作

啟動Spring Boot應用后,我們可以使用Postman或者瀏覽器等工具,調用UserService的addUser和getUser方法,測試Redis的操作。如果一切正常,我們應該可以看到用戶信息被正確地添加到Redis中,并且可以通過key獲取到用戶信息。

至此,我們已經成功地在Spring Boot項目中集成了Redis,并且可以正常使用RedisTemplate進行操作。在實際開發中,我們還可以使用Spring Data Redis提供的Repository接口,更方便地進行CRUD操作。同時,我們還可以使用Redis的發布/訂閱功能,實現消息的廣播和接收。

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

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

相關文章

RFID在新能源工廠大放異彩

RFID在新能源工廠大放異彩 我國在十四五規劃中提出了建設綠色低碳發展的目標&#xff0c;新能源產業成為了國家發展的重點領域之一&#xff0c;開始大力支持各種新能源廠商發展。各個廠商之間不僅比產品、比技術。也比生產想要降本增效&#xff0c;為了實現這一目標&#xff0…

MBD Introduction

介紹 MATLAB是MathWorks公司的商業數學軟件&#xff0c;應用于科學計算、可視化以及交互式程序設計等高科技計算環境。Simulink是MATLAB中的一種可視化仿真工具。 Simulink是一個模塊圖環境&#xff0c;用于多域仿真以及基于模型的設計。它支持系統設計、仿真、自動代碼生成以…

Spring基于xml半注解開發

目錄 Component的使用 依賴注解的使用 非自定義Bean的注解開發 Component的使用 基本Bean注解&#xff0c;主要是使用注解的方式替代原有的xml的<bean>標簽及其標簽屬性的配置&#xff0c;使用Component注解替代<bean>標簽中的id以及class屬性&#xff0c;而對…

算法Day26 數位統計

數位統計 Description 給你一個整數n&#xff0c;統計并返回各位數字都不同的數字x的個數&#xff0c;其中0 ≤ x < 10^n。 Input 輸入整數n 0≤n≤13 Output 輸出整數個數 Sample 代碼 import java.util.Scanner;public class Main {public static void main(String[] ar…

一個Oracle Application Container的實例

本例基本涵蓋了Oracle Multitenant功能中application container的以下內容&#xff1a; 創建application container/root創建application PDB創建application SEED在application root中安裝application在application root中升級application同步application 整個過程如下 創建…

Epoll服務器(ET工作模式)

目錄 Epoll ET服務器設計思路Connection類TcpServer類 回調函數Accepter函數Recever函數Sender函數Excepter函數 事件處理套接字相關接口封裝運行Epoll服務器 Epoll ET服務器 設計思路 在epoll ET服務器中&#xff0c;我們需要處理如下幾種事件&#xff1a; 讀事件&#xff…

基于javeweb實現的圖書借閱管理系統

一、系統架構 前端&#xff1a;jsp | js | css | jquery 后端&#xff1a;servlet | jdbc 環境&#xff1a;jdk1.7 | mysql | tocmat 二、代碼及數據庫 三、功能介紹 01. 登錄頁 02. 首頁 03. 圖書管理 04. 讀者管理 05. 圖書分類管理 06. 圖書借閱信息 07. 圖書歸還信…

CDN加速技術:降低服務器與網站成本的智慧選擇

隨著互聯網的飛速發展&#xff0c;網站的訪問量不斷攀升&#xff0c;服務器負載壓力逐漸增大。為了提高用戶體驗、降低服務器成本&#xff0c;并確保網站的高可用性&#xff0c;CDN&#xff08;內容分發網絡&#xff09;加速技術應運而生。本文將從服務器與網站成本的角度分析C…

NLP項目實戰01--電影評論分類

介紹&#xff1a; 歡迎來到本篇文章&#xff01;在這里&#xff0c;我們將探討一個常見而重要的自然語言處理任務——文本分類。具體而言&#xff0c;我們將關注情感分析任務&#xff0c;即通過分析電影評論的情感來判斷評論是正面的、負面的。 展示&#xff1a; 訓練展示如下…

比較不同聚類方法的評估指標

歸一化互信息&#xff08;NMI&#xff09; 要求&#xff1a;需要每個序列的真實標簽&#xff08;分類信息&#xff09;

你在地鐵上修過bug嗎?

作為技術人員&#xff0c;有沒有遇到下班路上收到老板電話&#xff0c;系統故障&#xff0c;然后地鐵上掏出電腦&#xff0c;修bug的場景。自己負責的業務線上出現問題&#xff0c;負責人心里是很慌的&#xff0c;在這種心理狀態下做事很容易二次犯錯&#xff0c;造成更大的問題…

SAP UI5 walkthrough step10 Descriptor for Applications

在這一步&#xff0c;我們將會把所有的應用相關的描述性的文件獨立放到manifest.json 新建一個manifest.json文件 webapp/manifest.json (New) {"_version": "1.58.0","sap.app": {"id": "ui5.walkthrough","i18n&q…

【已解決】No module named ‘sklearn‘

問題描述 No module named ‘sklearn‘ 解決辦法 pip install scikit-learn 完結撒花 契約、包容、感恩、原則……這些成年人該有的基本精神&#xff0c;為什么我在他們身上找不到呢&#xff1f;

圖像疊加中文字體

目錄 1) 前言2) freetype下載3) Demo3.1) 下載3.2) 編譯3.3) 運行3.4) 結果3.5) 更詳細的使用見目錄中說明 4) 積少成多 1) 前言 最近在做圖片、視頻疊加文字&#xff0c;要求支持中文&#xff0c;基本原理是將圖片或視頻解碼后疊加文字&#xff0c;之后做圖片或視頻編碼即可。…

ASP.NET Core概述-微軟已經收購了mono,為什么還搞.NET Core呢

一、.NET Core概述 1、相關歷程 .NET在設計之初也是考慮像Java一樣跨平臺&#xff0c;.NET Framework是在Windows下運行的&#xff0c;大部分類是可以兼容移植到Linux下&#xff0c;但是沒有人做這個工作。 2001年米格爾為Gnome尋找桌面開發技術&#xff0c;在研究了微軟的.…

數據庫版本管理框架-Flyway(從入門到精通)

一、flyway簡介 Flyway是一個簡單開源數據庫版本控制器&#xff08;約定大于配置&#xff09;&#xff0c;主要提供migrate、clean、info、validate、baseline、repair等命令。它支持SQL&#xff08;PL/SQL、T-SQL&#xff09;方式和Java方式&#xff0c;支持命令行客戶端等&am…

TCP對數據的拆分

應用程序的數據一般都比較大&#xff0c;因此TCP會按照網絡包的大小對數據進行拆分。 當發送緩沖區中的數據超過MSS的長度&#xff0c;數據會被以MSS長度為單位進行拆分&#xff0c;拆分出來的數據塊被放進單獨的網路包中。 根據發送緩沖區中的數據拆分情況&#xff0c;當判斷…

ffmpeg編譯問題

利用ffmpeg實現一個播放器&#xff0c;ffmpeg提供動態庫&#xff0c;但是編譯鏈接的時候遇到下面的問題&#xff1a; ../ffmpegWidgetPlayer/videoplayerwidget.cpp:23: error: undefined reference to sws_freeContext(SwsContext*) ../ffmpegWidgetPlayer/videoplayerwidget.…

JWT介紹及演示

JWT 介紹 cookie(放在瀏覽器) cookie 是一個非常具體的東西&#xff0c;指的就是瀏覽器里面能永久存儲的一種數據&#xff0c;僅僅是瀏覽器實現的一種數據存儲功能。 cookie由服務器生成&#xff0c;發送給瀏覽器&#xff0c;瀏覽器把cookie以kv形式保存到某個目錄下的文本…

JavaScript 金額元轉化為萬

function dealNum(price){if (price 0) {return 0元}const BASE 10000const decimal 0const SIZES ["", "萬", "億", "萬億"];let i undefined;let str "";if (price) {if ((price > 0 && price < BASE…