記錄一下Redis的安裝與基本使用redis
Redis(REmote DIctionary Server)遠程字典服務器,免費開源,是一個高性能的(Key/Value)分佈式內存數據庫。其特色爲,數據類型豐富,各類各樣的問題均可以映射到這些數據結構中,Redis數據結構致力於解決用戶問題,性能方面,Redis支持集羣加之自己做爲內存數據庫咱們能夠很方便的進行每秒數千萬的訪問,而且Redis支持數據持久化,能夠將內存中的數據保存到磁盤中,重啓的時候能夠再次加載使用,集羣方面Redis支持數據備份和容災恢復,保證了高可用,支持多種語言接口,支持事務、發佈訂閱等功能,整體性價比較高。數據庫
下載地址 https://pan.baidu.com/s/1mlv6OdLhbzofYcM2D--hIwwindows
提取碼 ly4i服務器
1.Windows服務啓動Redis數據結構
2.手動啓動Redis app
1.鏈接Redisdom
redis-cli.exe -h 127.0.0.1 -p 6380 -a abc+2015
2.設置與獲取String異步
set holecu 25 get holecu
3.設置與獲取List分佈式
rpush list 1,2,3 rpush list 4 lrange list 0 1
4.控制檯命令執行界面工具
1.下載地址
下載地址 https://pan.baidu.com/s/1_OtZ14_7M4F7NPMZQuDF8g
提取碼 1y5c
2.登入鏈接
3. Key/Val操做界面
1.Nuget StackExchange.Redis與Newtonsoft.Json
2.C# Redis 基本操做
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using StackExchange.Redis; using Newtonsoft.Json; namespace RedisDemo { class Program { static void Main(string[] args) { //127.0.0.1:6379:IP,端口 //password:Redis密碼 //connectTimeout:鏈接超時時間,這裏設置的是1000毫秒 //connectRetry:重試鏈接次數 //syncTimeout:同步操做默認超時時間 ConnectionMultiplexer _conn = ConnectionMultiplexer.Connect("127.0.0.1:6380,password=abc+2015,connectTimeout=1000,connectRetry=1,syncTimeout=1000"); var db = _conn.GetDatabase(5);//指定鏈接庫 5 //存取單值 db.StringSet("表面處理", "沉金"); string str = db.StringGet("表面處理"); db.StringSet("板厚", 1.0, TimeSpan.FromSeconds(60)); //設置60秒過時 //單值遞增或遞減 var intA = db.StringIncrement("Increment", 2);//Redis值 遞增2 var intB = db.StringDecrement("Decrement", 1);//Redis值 遞減1 //存取對象 mktxhglb model1 = new mktxhglb() { pdctno = "at00101ca0", LayerNum = 10, BoardThick = 1.0, SurfaceType = "沉金" }; string modelJson1 = JsonConvert.SerializeObject(model1); db.StringSet("mktxhglb", modelJson1); string modelJson2 = db.StringGet("mktxhglb"); mktxhglb model2 = JsonConvert.DeserializeObject<mktxhglb>(modelJson2); //存取List db.ListRightPush("list", 1); //尾 追加值 db.ListRightPush("list", 2); //尾 追加值 db.ListLeftPush("list", 10); //頂 追加值 db.ListLeftPush("list", 20); //頂 追加值 var list = db.ListRange("list"); //獲取list列表 20,10,1,2 var rightPop = db.ListRightPop("list");//尾 取出值 2 var leftpop = db.ListLeftPop("list"); //頂 取出值 20 //哈希(Redis自己是key/value,至關於Value中再嵌入一層key/value) db.HashSet("產品信息", "板長", 200); db.HashSet("產品信息", "板寬", 150); db.HashSet("產品信息", "板厚", 1.0); db.HashSet("產品信息", "表面處理", "沉錫"); var HashList = db.HashGetAll("產品信息");//獲取全部Hash foreach (var item in HashList) { Console.WriteLine($"產品信息 {item.Name} { item.Value}"); } var BoardLenght = db.HashGet("產品信息", "板長"); //消息發佈與訂閱 和MQ消息隊列功能 ISubscriber Subscriber = _conn.GetSubscriber(); //訂閱消息 pcbren.Channel通道 Subscriber.Subscribe("pcbren.Channel", new Action<RedisChannel, RedisValue>((channel, msg) => { Console.WriteLine($"收到消息:" + msg); })); //發送消息 pcbren.Channel通道 Subscriber.Publish("pcbren.Channel", $"發送信息 {DateTime.Now}"); //取消訂閱 Subscriber.Unsubscribe("pcbren.Channel"); //批量操做 var bat = db.CreateBatch(); //批量寫 Task t1 = bat.StringSetAsync("孔銅", 25); Task t2 = bat.StringSetAsync("面銅", 63); bat.Execute(); Task.WaitAll(t1, t2); //批量讀 List<Task<RedisValue>> valueList = new List<Task<RedisValue>>(); valueList.Add(bat.StringGetAsync("孔銅")); valueList.Add(bat.StringGetAsync("面銅")); bat.Execute(); } } public class mktxhglb { /// <summary> /// 生產型號 /// </summary> public string pdctno { get; set; } /// <summary> /// 層數 /// </summary> public int LayerNum { get; set; } /// <summary> /// 板厚 /// </summary> public double BoardThick { get; set; } /// <summary> /// 表面處理類型 /// </summary> public string SurfaceType { get; set; } } }
3.StackExchange.Redis Demo (C#)
地址 https://pan.baidu.com/s/1rn8GhiszkDQ7ccrqNcNYYA
提取碼 jsue
redis.windows.conf 配置文件參數說明
daemonize:如須要在後臺運行,把該項的值改成yes
pdifile:把pid文件放在/var/run/redis.pid,能夠配置到其餘地址
bind:指定redis只接收來自該IP的請求,若是不設置,那麼將處理全部請求,在生產環節中最好設置該項
port:監聽端口,默認爲6379
timeout:設置客戶端鏈接時的超時時間,單位爲秒
loglevel:等級分爲4級,debug,revbose,notice和warning。生產環境下通常開啓notice
logfile:配置log文件地址,默認使用標準輸出,即打印在命令行終端的端口上
database:設置數據庫的個數,默認使用的數據庫是0
save:設置redis進行數據庫鏡像的頻率
rdbcompression:在進行鏡像備份時,是否進行壓縮
dbfilename:鏡像備份文件的文件名
dir:數據庫鏡像備份的文件放置的路徑
slaveof:設置該數據庫爲其餘數據庫的從數據庫
masterauth:當主數據庫鏈接須要密碼驗證時,在這裏設定
requirepass:設置客戶端鏈接後進行任何其餘指定前須要使用的密碼
maxclients:限制同時鏈接的客戶端數量
maxmemory:設置redis可以使用的最大內存
appendonly:開啓appendonly模式後,redis會把每一次所接收到的寫操做都追加到appendonly.aof文件中,當redis從新啓動時,會從該文件恢復出以前的狀態
appendfsync:設置appendonly.aof文件進行同步的頻率
vm_enabled:是否開啓虛擬內存支持
vm_swap_file:設置虛擬內存的交換文件的路徑
vm_max_momery:設置開啓虛擬內存後,redis將使用的最大物理內存的大小,默認爲0
vm_page_size:設置虛擬內存頁的大小
vm_pages:設置交換文件的總的page數量
vm_max_thrrads:設置vm IO同時使用的線程數量