前言
本文提供全網最完整的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
洗掉服務命令:redis-server.exe --service-uninstall
CMD運行關閉服務結果如下圖:

注意:redis.windows.conf檔案默認配置的IP需要修改成本機的IP,window服務才能正常啟動,

配置密碼
我們都知道資料庫是需要密碼的,這樣才能保證安全性,不然任何一個知道你服務器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

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/17055.html
標籤:C#
上一篇:foreach 集合又拋經典例外了,這次一定要刨根問底
下一篇:c#泛型是什么
