全網最完整的Redis入門指導

来源:https://www.cnblogs.com/kiba/archive/2020/06/15/13085327.html
-Advertisement-
Play Games

前言 本文提供全網最完整的Redis入門指導教程,下麵我們從下載Redis安裝包開始,一步一步的學習使用。 下載Redis 官網提供的Redis安裝包是服務於Linux的,而我們需要在Window下使用Redis,所以,我們去下麵這個網址中下載。 Redis的下載地址:https://github. ...


前言

本文提供全網最完整的Redis入門指導教程,下麵我們從下載Redis安裝包開始,一步一步的學習使用。

下載Redis

官網提供的Redis安裝包是服務於Linux的,而我們需要在Window下使用Redis,所以,我們去下麵這個網址中下載。

Redis的下載地址:https://github.com/microsoftarchive/redis/releases

如下圖所示,Redis的windows版是由microsoftarchive提供,是微軟的一個工作小組,所以我們可以選擇完全信任,下麵我們選擇最新版的Redis版本下載(可以看到,儘管是最新版本,但最後一次提交已經是2016年了)

下載完成後解壓到文件夾,得到文件如下:

重要文件講解:

redis-server.exe:Redis服務端宿主程式,運行後會啟動一個控制台窗體,該窗體是宿主程式,如關閉窗體,則Redis服務關閉。

redis-check-dump.exe:本地資料庫檢查程式。

redis-check-aof.exe:更新日誌檢查程式。

redis-benchmark.exe:性能測試,用以模擬同時由N個客戶端發送M個 SETs/GETs 查詢。

redis-cli.exe: Redis客戶端程式,服務端開啟後,可以通過該客戶端進行命令測試。(運行後,會啟動一個控制台窗體,可在控制台內輸入命令)

Windows Service Documentation.docx:Redis服務端使用文檔。

redis.windows-service.conf:Redis啟動服務預設載入的配置文件(下文會介紹如何將Redis服務已Windows服務模式啟動),雙擊redis-server.exe啟動時並不載入該文件,雙擊exe啟動時會提示未指定配置文件,使用預設配置,這個預設配置應該是exe內部編寫的。

redis.windows.conf :Redis配置文件,其內容和redis.windows-service.conf是一模一樣的,相當於一個備份,如果希望Redis讀取的配置文件是redis.windows.conf ,則需要對Redis進行命令操作,重新設置配置文件。

瞭解Redis文件信息後,我們運行redis-server.exe,然後我們編寫一個C#的控制台項目訪問Redis。

Redis訪問

C#想訪問Redis需要使用開源類庫,那麼應該使用哪個類庫呢?

打開Redis的中文官網http://www.redis.cn/,在客戶端菜單下可以發現C#可用的Redis客戶端很多,如下圖:

這裡我們使用ServiceStack.Redis來訪問Redis。

創建項目

首先我們創建一個項目RedisConsole,然後在Nuget下搜索ServiceStack.Redis,如下圖:

然後創建一個RedisManager類來管理Redis,代碼如下:

using ServiceStack.Redis;
using ServiceStack.Text;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Threading.Tasks;
​
namespace RedisConsole
{
    /// <summary>
    /// RedisManager類主要是創建鏈接池管理對象的
    /// </summary>
    public class RedisManager
    {
        /// <summary>
        /// 綁定本機Redis
        /// </summary>
        private static string ConnStr = "localhost:6379";//password@ip:port  123@localhost:6379
        private static PooledRedisClientManager _prcm;
​
        
        /// <summary>
        /// 靜態構造方法,初始化鏈接池管理對象
        /// </summary>
        static RedisManager()
        {
            _prcm = CreateManager(new string[] { ConnStr }, new string[] { ConnStr });
        }
        /// <summary>
        /// 創建鏈接池管理對象
        /// </summary> 
        private static PooledRedisClientManager CreateManager(string[] readWriteHosts, string[] readOnlyHosts)
        {
            //WriteServerList:可寫的Redis鏈接地址。
            //ReadServerList:可讀的Redis鏈接地址。
            //MaxWritePoolSize:最大寫鏈接數。
            //MaxReadPoolSize:最大讀鏈接數。
            //AutoStart:自動重啟。
            //LocalCacheTime:本地緩存到期時間,單位:秒。
            //RecordeLog:是否記錄日誌,該設置僅用於排查redis運行時出現的問題,如redis工作正常,請關閉該項。
            //RedisConfigInfo類是記錄redis連接信息,此信息和配置文件中的RedisConfig相呼應
            // 支持讀寫分離,均衡負載 
            return new PooledRedisClientManager(readWriteHosts, readOnlyHosts, new RedisClientManagerConfig
            { 
                MaxWritePoolSize = 5, // “寫”鏈接池鏈接數 
                MaxReadPoolSize = 5, // “讀”鏈接池鏈接數 
                AutoStart = true,
            },
            0,//初始化資料庫 預設有16個數據 這裡設置初始化為第0個
            50,//連接池數量
            5//連接池超時秒數
            )
            { 
                ConnectTimeout = 6000,//連接超時時間,毫秒
                SocketSendTimeout = 6000,//數據發送超時時間,毫秒
                SocketReceiveTimeout = 6000,// 數據接收超時時間,毫秒
                IdleTimeOutSecs = 60,//連接最大的空閑時間 預設是240
                PoolTimeout = 6000 //連接池取鏈接的超時時間,毫秒
            };
        }
​
        /// <summary>
        /// 客戶端緩存操作對象
        /// </summary>
        public static IRedisClient GetClient()
        {
            if (_prcm == null)
            {
                _prcm = CreateManager(new string[] { RedisPath }, new string[] { RedisPath });
            }
            return _prcm.GetClient();
        }
    }
 }

然後在Main函數里使用RedisManager來進行寫入和讀取,代碼如下:

static void Main(string[] args)
        { 
            var redisClient = RedisManager.GetClient(); 
            redisClient.Set<string>("Name", "Kiba518");
            redisClient.Set<int>("Age", 10000);  
            Console.WriteLine($"MyName:{redisClient.Get<string>("Name")}====MyAge:{redisClient.Get<int>("Age")}");
            redisClient.Dispose();  //釋放記憶體
            Console.ReadLine();
        }

運行結果如下圖所示:

可以看到,我們成功的完成了Redis的插入和讀取。

但我們不滿足於此,我們需要一個圖形管理界面更直觀的查看Redis資料庫。

下載RedisStudio。

下載地址:https://github.com/cinience/RedisStudio/releases

運行RedisStudio,連接本地Redis,如下圖:

連接成功後,點擊Data菜單,查看數據。

可以看到,我們添加的數據被寫進了第0個資料庫(Redis預設會創建16個資料庫,資料庫編號以0開頭)。

Redis的Windows服務

使用Cmd的命令視窗作為Redis的宿主進程確實有一些問題,比如關閉了就不能用了,比如不能開機自啟。為了讓Redis服務可以更好的運行,我們需要把Redis的宿主改成Windows是服務。

這件事不需要我們自行開發,redis-server.exe中已經提供了這些功能,它的Main函數會處理一些他接受的參數。

現在我們使用命令行啟動redis-server.exe。

註:使用Redis命令時,需要在先將目錄跳轉到Redis所在文件夾,如【cd/d D:\Redis-x64-3.2.100】

redis-server.exe --service-install redis.windows.conf --loglevel verbose

參數介紹:

service-install:啟動Redis服務安裝,必須是第一個參數。

redis.windows.conf:指定配置文件。

loglevel verbose:日誌級別。

CMD運行結果如下圖所示:

查看服務。

如上圖所示,服務已經成功的安裝到系統中了,右鍵就可以啟動服務了。

當然我們也可以通過命令行啟動和關閉服務,命令如下:

啟動服務命令:redis-server.exe --service-start

關閉服務命令:redis-server.exe --service-stop

CMD運行關閉服務結果如下圖:

配置密碼

我們都知道資料庫是需要密碼的,這樣才能保證安全性,不然任何一個知道你伺服器IP的人只要按個埠試一遍就可以連接你的資料庫了。

Redis的資料庫密碼需要在配置文件中設置,預設是沒有密碼的。

因為上文我們配置Windows服務時,指定了redis.windows.conf文件為配置文件,所以我們現在需要在redis.windows.conf文件中配置密碼。

打開redis.windows.conf文件,搜索【# requirepass foobared】定位到配置密碼的行(配置文件中#為註釋符),然後在該行下方輸入requirepass 123456,其中123456就是資料庫的密碼了,如下圖所示:

現在我們測試一下,運行我們剛纔的項目,結果如下圖所示:

可以看到,系統提示了驗證錯誤的異常。

這是因為我們上文配置的連接字元串是【localhost:6379】這裡面只有IP和埠,現在因為有了密碼所以這個字元串不在合法了。

現在我們將密碼加入進字元串,修改代碼如下:

private static string ConnStr = "123456@localhost:6379";

項目成功運行,訪問Redis資料庫成功,如下圖:

----------------------------------------------------------------------------------------------------

代碼已經傳到Github上了,歡迎大家下載。

Github地址:https://github.com/kiba518/RedisConsole

----------------------------------------------------------------------------------------------------

註:此文章為原創,任何形式的轉載都請聯繫作者獲得授權並註明出處!
若您覺得這篇文章還不錯,請點擊下方的推薦】,非常感謝!

https://www.cnblogs.com/kiba/p/13085327.html

 

 


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

-Advertisement-
Play Games
更多相關文章
  • ##L1-023 輸出GPLT (20分) 給定一個長度不超過 $10000$ 的、僅由英文字母構成的字元串。請將字元重新調整順序,按 GPLTGPLT.... 這樣的順序輸出,並忽略其它字元。當然,四種字元(不區分大小寫)的個數不一定是一樣多的,若某種字元已經輸出完,則餘下的字元仍按 GPLT 的 ...
  • class Queue { private: Queue(const Queue & q) : qsize(0) {} // preemptive definition 偽私有方法 Queue & operator = (const Queue & q) { return *this; } // p ...
  • class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = Noneroot1 = TreeNode(1)root2 = TreeNode(2)root1.left = root2# 這道題也是遞 ...
  • ——調用構造函數時,對象將在括弧中的代碼執行前被創建,因此無法在括弧內初始化對象的常量成員。 Queue::Queue(int qs) { front = rear = NULL; items = 0; qsize =qs; // not acceptable! qsize是一個常量成員 } 因此C ...
  • 1.querystring的方式:(平時本人最喜歡用的方法,可寫後臺及前臺) 將需要的值直接寫到鏈接的後面,這些內容將直接顯示到地址欄中,在傳遞安全性要求不高的一個或多個值或者是結構簡單的值就可以使用這樣的方法。 如: Response.Redirect( "target.aspx?id=2 ") ...
  • 今天使用npoi導出excel,數據三萬以上,等了五六分鐘沒導完,調試發現瓶頸在AutoSizeColumn()方法,網上一搜https://bz.apache.org/bugzilla/show_bug.cgi?id=58896,討論話題是當有單元格合併, AutoSizeColumn()就會效率 ...
  • 今天我的vs2017社區版評估到了,想著登錄賬號就ok了,但是登錄成功後點擊檢查更新的許可證時,提示"無法下載許可證,請檢查你的網路連接或代理設置"。 網上查了一下,只需找到目錄C:\Program Files (x86)\Microsoft Visual Studio\2017\Community ...
  • 系列文章 基於 abp vNext 和 .NET Core 開發博客項目 - 使用 abp cli 搭建項目 基於 abp vNext 和 .NET Core 開發博客項目 - 給項目瘦身,讓它跑起來 基於 abp vNext 和 .NET Core 開發博客項目 - 完善與美化,Swagger登場 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...