一、什么是Redis?
Redis(Remote Dictionary Server ),即遠程字典服務。Redis是是現在最受歡迎的NoSQL數據庫之一,是一種支持key-value等多種數據結構的存儲系統。是一個開源的使用ANSI C語言編寫,可用於緩存,事件發布或訂閱,高速隊列等場景。支持網絡,提供字符串,哈希,列表,隊列,集合結構直接存取,基於內存,可持久化。Redis的出現,很大程度補償了memcached這類key/value存儲的不足,在部分場合可以對關系數據庫起到很好的補充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客戶端,使用方便。市面上類似於Redis,同樣是NoSQL型的數據庫有很多,除了Redis,還有MemCache、Cassadra和MongoDB。
二、Redis具備的特點
相比於其他數據庫類型,redis所具備的特點是非常明顯的,如下: * C/S通訊模型- 單進程單線程模型
- 豐富的數據類型
- 操作具有原子性
- 持久化
- 高並發讀寫
- 支持lua腳本
三、Redis應用場景
眾多語言都支持Redis,因為Redis交換數據快,非常的適合存儲一些需要頻繁調取的數據,從而節省內存開銷,以達到提升速度的要求和節約服務器的開銷。如:- 最常用的會話緩存
- 支付消息隊列
- 活動排行榜或計數
- 高頻讀、低頻寫````數據
- 社交網絡和實時系統。
三、Redis數據類型
- String(字符串):Redis最基本的數據類型,一個鍵對應一個值,一個鍵值最大存儲512MB
- Hash(哈希):hash是一個鍵值對的集合,是一個String類型的field和value的映射表,適合用於存儲對象。
- List(列表):是redis的簡單的字符串列表,按插入順序排序的字符串元素集合, 基於雙鏈表實現。
- Set(集合):是String字符串類型的無序集合,與List類型最大的區別是:集合中的元素沒有順序, 且元素是唯一的。
- ZSet(sorted set有序集合)是String類型的有序集合,也不可重復。有序集合中的每個元素都需要指定一個分數,根據分數對元素進行升序排序。
四、實際部署使用
我們將以實際來演示Redis部署使用。首先是選擇版本號,本文選擇的是5.0.10的版本Redis官方下載:https://github.com/tporadowski/redis/releases
1-下載完成后進行解壓,在解壓文件夾內打開cmd窗口,
2-在cmd窗口下輸入如下命令啟動redis服務,結果如下圖:
redis-server.exe redis.windows.conf
3-再到剛剛解壓的文件夾內打開一個新的cmd窗口,輸入如下代碼,用於連接redis服務。
redis-cli.exe -h 127.0.0.1 -p 6379
然后我們設置一個新的值
set newkey ‘This is the redis clinet'
再讀取這個值,能正常寫入、讀取,說明部署的resid就沒問題了。
get newkey
在登錄狀態下對redis設置一個密碼,至此 redis設置就完成了。
config set requirepass 123456
4-彩蛋:以下內容適用於把redis部署在服務器或模擬器上的操作。本機的只需按如上操作即可。
因為我的redis部署在虛擬機(模擬服務器),redis默認監聽是本機的IP,如需局域網連接進去需要在redis.windows.conf文件內把bind 127.0.0.1用#注釋掉(如下圖),然后重啟redis。如果開啟防火牆還需要配置出入規則,否則還是無法連接的。
在如上配置完成后,本機也需要解壓redis壓縮包,然后在解壓文件內打開cmd,通過下面命令去連接模擬器上的redis.
注:192.168.226.134是模擬器IP
redis-cli.exe -h 192.168.226.134 -p 6379
5-連上后或者當你嘗試通過 get newKey 讀取剛剛設置的值時,然后redis就送你一份大禮了,開頭如下:
(error) DENIED Redis is running in protected mode because protected mode is……
這其實是redis的保護機制
這時候我們需要到模擬器(服務器)上在剛解壓的redis,打開解壓文件夾下的redis.windows.conf文件,把protected-mode yes用改為protected-mode no(如下圖),然后重啟redis。
當你操作以上步驟后,再次嘗試去連接redis,並讀取、寫入數據時就會發現不再報錯。