一、Redis簡介 Redis全稱為 Remote Dictionary Server(遠程詞典服務),開源(BSD許可)的,使用 C 語言開發的。 Redis是記憶體中的數據結構存儲系統,它可以用作資料庫、緩存和消息中間件。 支持多種類型的數據結構,如 字元串(strings), 散列(hashes ...
一、Redis簡介
Redis全稱為 Remote Dictionary Server(遠程詞典服務),開源(BSD許可)的,使用 C 語言開發的。
Redis是記憶體中的數據結構存儲系統,它可以用作資料庫、緩存和消息中間件。
支持多種類型的數據結構,如 字元串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 與範圍查詢, bitmaps, hyperloglogs 和 地理空間(geospatial) 索引半徑查詢。
內置了複製,LUA腳本,LRU驅動事件,事務和不同級別的磁碟持久化,並通過Redis哨兵和自動分區提供高可用性。
1、Redis背景
Redis的開發作者是一名義大利的程式員,名字為Salvatore Sanfilippo(網名:antirez)
Salvatore 最初創建 Redis 是為了擴展實時日誌分析工具LLOOGG ;早先LLOOGG是基於MySQL的,MySQL的數據是存在磁碟的,存在I/O性能瓶頸,這促使Salvatore編寫一個記憶體型資料庫。
讓基本的 Redis 伺服器運行之後,他決定與其他人分享這項工作,在2009年將Redis正式開源。
2、Redis特性
-
速度快、性能高
- 基於記憶體
- 命令執行單線程,避免了不必要的上下文切換及競爭條件
- key-value 存儲,底層數據結構加持
- IO多路復用
- 多線程 IO 模型
- 支持 Pipelining 命令,可一次發送多條命令來提高吞吐率,減少通信延遲
-
原子操作
-
豐富的數據結構,針對value的
- String(字元串)
- List(鏈表)
- Set(集合)
- Zset(sorted set --有序集合)
- Hash(哈希類型)
- Bitmaps:一般用於大數據量的二值性統計,比如簽到、打卡
- HyperLogLog:用於對數據量超級龐大的日誌做去重統計
- Geospatial:地理空間,其主要用於地理位置相關的計算
- Stream:可實現簡單的消息中間件的功能(publish/subscribe)
-
提供了眾多個性化功能
- 慢查詢分析
- 性能測試
- Pipeline
- 簡單事務
- Lua腳本擴展
- 發佈/訂閱
-
持久化
-
主從複製
-
高可用、分散式集群
-
客戶端語言廣泛
3、Redis網站
官方文檔:https://redis.io/
中文參考:
作者博客:http://antirez.com/latest/0
二、Redis安裝
前置環境:gcc編譯器
yum -y install gcc automake autoconf libtool make
官網步驟:https://redis.io/docs/getting-started/installation/
下載地址:https://redis.io/download/
Redis是C語言開發的,需要進行安裝,安裝方式在README.MD中即可找到!
wget https://download.redis.io/releases/redis-7.0.4.tar.gz
tar xzf redis-7.0.4.tar.gz
cd redis-7.0.4/
# 編譯,make會找本目錄下的MakeFile文件,成功後src下會生成可執行文件
make
# 安裝到指定目錄之後,可以看到對應的目錄下只有執行文件,就不和源碼混在一起
make install PREFIX=/opt/redis7
Redis編譯安裝完成之後,會生成幾個可執行文件,分別具有不同的作用,我們現在先簡單瞭解下,之後我們陸續會進行介紹!
Redis編譯安裝完成之後,我們還可以對其配置一個環境變數,以後啟動Redis就會變得較為方便一些!
# 配置環境變數
vi /etc/profile
export REDIS_HOME=/opt/redis7
export PATH=$PATH:$REDIS_HOME/bin
# 刷新環境變數
source /etc/profile
#查看環境變數
echo $PATH
Redis官方並沒有提供支持Windows環境下的安裝包,生產環境下基本也都是Linux伺服器為主!
官方雖然沒有提供Windows版本的Redis,但是有一些愛搞事情的開發者對其做了維護!
Windows環境下安裝:https://github.com/zkteco-home/redis-windows
三、啟動服務
1、預設前臺啟動
在任意目錄執行 redis-server
命令即可啟動 Redis,但是這種啟動方式會阻塞當前命令行視窗!
再開一個視窗查看Redis進程:ps -ef | grep redis
通過 Ctrl + C
可以停止 Redis!
2、命令式後臺啟動
使用 nohub 命令,末尾再添加一個&符,可以使要啟動的程式在後臺以守護進程方式運行。
這樣的好處是,進程啟動後不會占用一個會話視窗,且其還會在當前目錄,即運行啟動命令的當前目錄中創建一個 nohup.out 文件用於記錄 Redis 的操作日誌。
停止Redis服務
redis-cli shutdown
3、配置式後臺啟動
1)修改Redis編譯安裝目錄下的redis.conf配置文件,最好先複製一份!
2)修改配置
3)啟動Redis
4、配置Linux服務啟動
我們還可以將Redis配置成一個對應的服務,只需要執行Redis源碼目錄下的utils下 install_server.sh
腳本即可!
如果執行的時候有報如下的錯誤:
這時候我們只需要將腳本文件打開,將裡面報錯的文本內容註釋掉即可!
這時候我們再次執行 install_server.sh
腳本,即可看到以下的界面:
這裡我們先選擇預設埠,也可以自己進行埠配置!
一個物理機可以有多個Redis進程,通過埠號進行區分!
可執行程式就一份,但記憶體中如果存在多個實例需要有各自的配置文件、持久化目錄等資源
查看服務狀態:service redis_6379 status
關閉/啟動Redis服務:service redis_6379 stop/start
查看Redis進程:ps -ef | grep redis
四、Redis客戶端
1、本地命令行工具訪問
本地命令行客戶端的工具為 redis-cli
基本格式:redis-cli -h (host}-p {port}
- -h:指定要連接的 Redis 伺服器的 IP
- -p:指定要連接的 Redis 的埠號
若連接的是本機 Redis,且埠號沒有改變,保持預設的 6379,則-h 與-p 選項可以省略掉!
#在這種狀態下,會把get獲取的16進位xshell的編碼顯示;比如顯示“中”,而不是16進位
redis-cli --raw
設置密碼
Redis可以設置訪問密碼,可以對用戶進行身份驗證。沒有密碼的用戶可以登錄 Redis,但無法訪問!
訪問密碼的設置位置在 redis.conf 配置文件中。預設是被註釋掉的,沒有密碼。
沒有進行密碼驗證的用戶,無法對Redis進行讀、寫!
對於密碼的使用,有兩種方式:
- 登錄時未使用密碼,則訪問時先輸入密碼;
- 登錄時直接使用密碼登錄,訪問時無需再輸入密碼!
2、遠程圖形化工具訪問
- Redis Desktop Manager:https://resp.app/(原來是 http://redisdesktop.com)
- AnotherRedisDeskTopManager:https://gitee.com/qishibo/AnotherRedisDesktopManager/releases
- Redis Insight:https://redis.com/redis-enterprise/redis-insight/
- RedisPlus:https://gitee.com/MaxBill/RedisPlus
前置配置
遠程客戶端連接之前我們要針對做一些配置,使遠程主機上的客戶端能夠連接並訪問到服務端的 Redis。
- IP綁定
還可以配置成bind 0.0.0.0 表示可以和所有的IP進行綁定!
- 關閉保護模式
預設開啟保護模式,其只允許本機的客戶端訪問。但生產中應該關閉,以確保其它客戶端可以連接 Redis。
作者:貓的薛定諤出處:https://www.cnblogs.com/hanyu-2020/
---------------------------------------------------------
個性簽名:獨學而無友,則孤陋而寡聞。做一個靈魂有趣的人!
如果覺得這篇文章對你有小小的幫助的話,記得在右下角點個“推薦”哦,博主在此感謝!
本文內容若有疏漏請多多包涵,如有錯誤麻煩請指正,如有想法交流非常歡迎在下方評論!