Redis系列(一):Redis簡介及環境安裝

来源:https://www.cnblogs.com/zwwhnly/archive/2020/01/13/12185696.html
-Advertisement-
Play Games

提到Redis,大家肯定都聽過,並且應該都在項目中或多或少的使用過,也許你覺得Redis用起來挺簡單的呀,但如果有人問你下麵的幾個問題(比如同事或者面試官),你能回答的上來嗎? 1. 什麼是Redis? 2. Redis能存儲哪幾種數據結構? 3. Redis有幾種持久化機制?它們的優缺點分別是什麼 ...


提到Redis,大家肯定都聽過,並且應該都在項目中或多或少的使用過,也許你覺得Redis用起來挺簡單的呀,但如果有人問你下麵的幾個問題(比如同事或者面試官),你能回答的上來嗎?

  1. 什麼是Redis?
  2. Redis能存儲哪幾種數據結構?
  3. Redis有幾種持久化機制?它們的優缺點分別是什麼?
  4. 哪些場景需要使用Redis?
  5. 什麼是緩存雪崩,如何避免?
  6. 什麼是緩存穿透,如何避免?
  7. 什麼是緩存擊穿,如何避免?

如果你都能回答的上來,恭喜你,說明你對Redis有一定的瞭解,如果回答不上來,也沒關係,本系列博客會對Redis進行一系列的講解,歡迎關註!

所謂工欲善其事,必先利其器,既然要學習Redis,首先我們至少得知道什麼是Redis以及如何安裝Redis環境,這也是本篇博客的主要內容。

1. Redis簡介

什麼是Redis呢?

Redis是一個開源(BSD許可)的記憶體數據結構存儲,用作資料庫、緩存和消息代理。它支持諸如字元串、散列、列表、集合、有序集合等數據結構。-- Redis官網

Redis是一個開源的使用ANSI C語言編寫、支持網路、可基於記憶體亦可持久化的高性能的key-value資料庫。-- 百度百科

Redis是一款依據BSD開源協議發行的高性能key-value存儲系統,通常被稱為數據結構伺服器。-- 其它網友

Redis是一個遠程記憶體資料庫,它不僅性能強勁,而且還具有複製特性以及為解決問題而生的獨一無二的數據模型。Redis提供了5種不同類型的數據結構,各式各樣的問題都可以很自然地映射到這些數據結構上。 -- 《Redis實戰》

Redis是一個速度非常快的非關係型資料庫,它可以存儲鍵(key)與5種不同類型值(value)之間的映射(mapping),可以將存儲在記憶體的鍵值對數據持久化到硬碟,可以使用複製特性來擴展讀性能,還可以使用客戶端分片來擴展寫性能。-- 《Redis實戰》

2. Redis環境安裝(Windows)

說明:Redis官方並沒有提供Windows版本的Redis,也不建議在生產環境使用Windows版本的Redis,我目前所在的公司生產環境Redis是部署在Linux伺服器的。

雖然Redis官方不支持Windows版本,但是微軟Microsoft Open Tech Group提供了1個Windows版本的Redis,下載地址:https://github.com/microsoftarchive/redis/releases

將下載好的文件解壓到你喜歡的目錄,我這裡是E:\Tools\Redis-x64-3.0.504,如下所示:

雙擊上圖中紅色標記的redis-server.exe即可啟動Redis服務:

也可以打開一個cmd視窗,切換到Redis所在目錄,然後執行如下命令啟動:

redis-server.exe redis.windows.conf

通過這2種方式打開,需要保證cmd視窗一直保持打開狀態,關閉後客戶端就無法連接,如果伺服器重啟了,需要再次打開Redis服務端,為瞭解決該問題,我們可以把Redis安裝成Windows服務:

cd E:\Tools\Redis-x64-3.0.504

redis-server --service-install redis.windows.conf

你可以直接在界面上啟動/停止該服務,也可以執行cmd命令來啟動/停止/卸載該服務:

啟動服務:

redis-server --service-start

停止服務:

redis-server --service-stop

卸載服務:

redis-server --service-uninstall

3. Redis環境安裝(Linux)

首先,我們需要將Linux環境下Redis的安裝包放到伺服器上去,這裡有2種方法,第1種方法是,打開Redis官網的下載地址:https://redis.io/download,下載穩定版本到本機:

然後通過工具,比如Xftp,將本地下載的文件上傳至Linux伺服器的某目錄下,比如我這裡要上傳的目錄是/mnt。

第2種方式是通過命令直接下載Redis的安裝包到伺服器的/mnt目錄下,具體命令如下所示:

cd mnt/

wget -q http://download.redis.io/releases/redis-5.0.7.tar.gz

然後,執行如下命令解壓文件:

tar -xzf redis-5.0.7.tar.gz

然後,執行如下命令將解壓好的文件移動到/usr/local目錄下,併進行編譯:

mv redis-5.0.7 /usr/local/

cd /usr/local/redis-5.0.7

make

註意事項:執行完make命令後,屏幕會輸出好多信息,大概有2~3屏的樣子

當看到如下信息時,代表編譯完成:

然後,切換到/usr/local/redis-5.0.7/src目錄,執行make install命令進行安裝:

cd src/

make install

然後,切換到/usr/local/redis-5.0.7目錄,新建文件夾bin和etc,並將該目錄下的redis.conf文件移動到etc目錄,

將/usr/local/redis-5.0.7/src目錄下的mkreleasehdr.sh redis-benchmark redis-check-aof redis-cli redis-server

移動到剛剛創建的bin目錄:

cd ..

mkdir bin

mkdir etc

mv redis.conf etc/

cd src

mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-cli redis-server /usr/local/redis-5.0.7/bin/

然後,切換到/usr/local/redis-5.0.7/etc目錄,修改下Redis的配置文件redis.conf:

cd ..

cd etc/

vi redis.conf

redis.conf主要修改以下4點:

  1. 將daemonize no改為daemonize yes,表示需要在後臺運行

  2. 將bind 127.0.0.1這一行註釋掉

    這裡的bind指的是只有指定的網段才能遠程訪問這個redis,註釋掉後,就沒有這個限制了。

  3. 將protect-mode yes改為protect-mode no

    預設是protect-mode yes,不能遠程訪問,改為no之後,可以遠程訪問

  4. 添加requirepass 123456設置密碼(預設密碼為空)

最後,切換到/usr/local/redis-5.0.7/bin目錄,執行如下命令啟動Redis服務:

cd ..

cd bin/

redis-server /usr/local/redis-5.0.7/etc/redis.conf

啟動後,可以執行如下命令查看Redis是否啟動以及進程ID:

ps aux | grep redis-server

4. Redis Hello World示例

打開cmd視窗,打開一個redis-cli交互視窗來簡單使用下Redis:

redis-cli.exe -h 127.0.0.1 -p 6379

設置一個key-value緩存,其中key為hello,value為hello world!:

set hello "hello world!"

獲取key為hello的值:

get hello

5. Redis Desktop Manager使用

雖然我們可以通過命令的方式來查看Redis存儲的數據,但畢竟不太友好,這裡推薦個比較流行的工具:Redis Desktop Manager。

官網地址:https://redisdesktop.com/

官網現在的版本2019.5需要付費才能使用,否則只有14天的試用期。

在2019年6份打開還是下麵這樣的,貌似漲價了啊,哈哈。

不過我們仍然可以下載之前不付費的版本,下載地址:https://github.com/uglide/RedisDesktopManager/releases/tag/0.8.8

安裝過程比較簡單,這裡不再贅述,安裝完成後,連接本機Windows環境下的Redis伺服器:

連接成功後,可以看到之前設置的值:

也可以連接遠程Linux環境下的Redis伺服器:

有些同學可能使用的工具是Another.Redis.Dsektop.Manager,這裡只貼下下載地址:http://electronjs.org/apps/anotherredisdesktopmanager,有興趣的同學可以自行下載。

6. 源碼及參考

Redis的安裝和部署(windows )

Windows下使用Redis(一)安裝使用

Linux下安裝Redis

如果覺得文章寫的不錯,歡迎關註我的微信公眾號:「申城異鄉人」,所有博客會同步更新。

如果有興趣,也可以添加我的微信:zwwhnly_002,一起交流和探討技術。


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

-Advertisement-
Play Games
更多相關文章
  • mac 安裝 navicat for mysql 直接安裝 首先打開mac控制台輸入命令行:sudo spctl --master-disable 百度盤,提取碼: vrtr 失效請留言,會及時更新,謝謝 ...
  • MySQL 創建資料庫: CREATE DATABASE [IF NOT EXISTS] <資料庫名> [[DEFAULT] CHARACTER SET <字元集名>] [[DEFAULT] COLLATE <校對規則名>]; 註: [IF NOT EXISTS] 方法判斷資料庫是否存在,不存在才創 ...
  • php操作資料庫八步走 <?php // 1、建立連接 $connection = mysqli_connect('127.0.0.1', 'root', '123456'); // 2、判斷連接是否成功 if (mysqli_connect_error() != null) { die(mysql ...
  • 前提要述:參考書籍《MySQL必知必會》 利用空閑時間快速回顧一些資料庫基礎。 4.1 連接 在最初安裝MySQL,可能會要求你輸入一個管理登錄(通常為root)和一個口令(密碼)。 連接MySQL需要以下信息: 主機名(電腦名)——如果連接到本地MySQL伺服器,為localhost; 埠(如 ...
  • 前提要述:參考書籍《MySQL必知必會》 《MySQL必知必會》是先講了查詢,但是沒有記錄就無法查詢,所以先將如何添加數據。 表已經知道怎麼創建了,隨便創兩張。 5.1 插入數據 MySQL使用 INSERT來插入(或添加)行(記錄)到資料庫表中。插入可用以下幾種方式使用: 插入完整的行(記錄); ...
  • #!/bin/bash echo "修改主機名" hostnamectl set-hostname wangxfa hostname sleep 1 echo "查看並關閉防火牆" systemctl status firewalld systemctl stop firewalld systemc ...
  • 屬性順序錯誤 一般情況下欄位類型要放在前面,限制參數放在後面,UNSIGNEDZEROFILL 之間沒有先後順序,主鍵 KEY 和 auto_increment 要放在UNSIGNED ZEROFILL 後面 否則報錯 。設置為主鍵的欄位沒有 deafault參數,not null 一般放在最後面。 ...
  • # 註釋內容 -- 註釋內容 -- 創建資料庫 king CREATE DATABASE king; -- 查看當前伺服器下有哪些資料庫 SHOW DATABASES; SHOW SCHEMAS; -- 查看king資料庫的詳細信息 SHOW CREATE DATABASE king; -- 創建數 ...
一周排行
    -Advertisement-
    Play Games
  • 概述:在C#中,++i和i++都是自增運算符,其中++i先增加值再返回,而i++先返回值再增加。應用場景根據需求選擇,首碼適合先增後用,尾碼適合先用後增。詳細示例提供清晰的代碼演示這兩者的操作時機和實際應用。 在C#中,++i 和 i++ 都是自增運算符,但它們在操作上有細微的差異,主要體現在操作的 ...
  • 上次發佈了:Taurus.MVC 性能壓力測試(ap 壓測 和 linux 下wrk 壓測):.NET Core 版本,今天計劃準備壓測一下 .NET 版本,來測試並記錄一下 Taurus.MVC 框架在 .NET 版本的性能,以便後續持續優化改進。 為了方便對比,本文章的電腦環境和測試思路,儘量和... ...
  • .NET WebAPI作為一種構建RESTful服務的強大工具,為開發者提供了便捷的方式來定義、處理HTTP請求並返迴響應。在設計API介面時,正確地接收和解析客戶端發送的數據至關重要。.NET WebAPI提供了一系列特性,如[FromRoute]、[FromQuery]和[FromBody],用 ...
  • 原因:我之所以想做這個項目,是因為在之前查找關於C#/WPF相關資料時,我發現講解圖像濾鏡的資源非常稀缺。此外,我註意到許多現有的開源庫主要基於CPU進行圖像渲染。這種方式在處理大量圖像時,會導致CPU的渲染負擔過重。因此,我將在下文中介紹如何通過GPU渲染來有效實現圖像的各種濾鏡效果。 生成的效果 ...
  • 引言 上一章我們介紹了在xUnit單元測試中用xUnit.DependencyInject來使用依賴註入,上一章我們的Sample.Repository倉儲層有一個批量註入的介面沒有做單元測試,今天用這個示例來演示一下如何用Bogus創建模擬數據 ,和 EFCore 的種子數據生成 Bogus 的優 ...
  • 一、前言 在自己的項目中,涉及到實時心率曲線的繪製,項目上的曲線繪製,一般很難找到能直接用的第三方庫,而且有些還是定製化的功能,所以還是自己繪製比較方便。很多人一聽到自己畫就害怕,感覺很難,今天就分享一個完整的實時心率數據繪製心率曲線圖的例子;之前的博客也分享給DrawingVisual繪製曲線的方 ...
  • 如果你在自定義的 Main 方法中直接使用 App 類並啟動應用程式,但發現 App.xaml 中定義的資源沒有被正確載入,那麼問題可能在於如何正確配置 App.xaml 與你的 App 類的交互。 確保 App.xaml 文件中的 x:Class 屬性正確指向你的 App 類。這樣,當你創建 Ap ...
  • 一:背景 1. 講故事 上個月有個朋友在微信上找到我,說他們的軟體在客戶那邊隔幾天就要崩潰一次,一直都沒有找到原因,讓我幫忙看下怎麼回事,確實工控類的軟體環境複雜難搞,朋友手上有一個崩潰的dump,剛好丟給我來分析一下。 二:WinDbg分析 1. 程式為什麼會崩潰 windbg 有一個厲害之處在於 ...
  • 前言 .NET生態中有許多依賴註入容器。在大多數情況下,微軟提供的內置容器在易用性和性能方面都非常優秀。外加ASP.NET Core預設使用內置容器,使用很方便。 但是筆者在使用中一直有一個頭疼的問題:服務工廠無法提供請求的服務類型相關的信息。這在一般情況下並沒有影響,但是內置容器支持註冊開放泛型服 ...
  • 一、前言 在項目開發過程中,DataGrid是經常使用到的一個數據展示控制項,而通常表格的最後一列是作為操作列存在,比如會有編輯、刪除等功能按鈕。但WPF的原始DataGrid中,預設只支持固定左側列,這跟大家習慣性操作列放最後不符,今天就來介紹一種簡單的方式實現固定右側列。(這裡的實現方式參考的大佬 ...