Ⅰ python中redis服務怎麼起
redis-py提供兩個類Redis和StrictRedis用於實現Redis的命令,StrictRedis用於實現大部分官方的命令,
並使用官方的語法和命令,Redis是StrictRedis的子類,用於向後兼容舊版本的redis-py。
import redis 導入redis模塊,通過python操作redis 也可以直接在redis主機的服務端操作緩存資料庫
r = redis.Redis(host='192.168.19.130', port=6379) host是redis主機,需要redis服務端和客戶端都起著 redis默認埠是6379
r.set('foo', 'Bar') key是"foo" value是"bar" 將鍵值對存入redis緩存
print r.get('foo') Bar 取出鍵foo對應的值!
Ⅱ 詳解Redis 主從復制及主從復制原理
Redis是一個開源的使用ANSI C語言編寫、支持網路、可基於內存亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。從2010年3月15日起,Redis的開發工作由VMware主持。從2013年5月開始,Redis的開發由Pivotal贊助。
概述
在現有企業中80%公司大部分使用的是redis單機服務,在實際的場景當中單一節點的redis容易面臨風險。
2、容量瓶頸。 當我們有需求需要擴容 Redis 內存時,從 16G 的內存升到 64G,單機肯定是滿足不了。當然,你可以重新買個 128G 的新機器。
解決辦法
要實現分布式資料庫的更大的存儲容量和承受高並發訪問量,我們會將原來集中式資料庫的數據分別存儲到其他多個網路節點上。
Redis 為了解決這個單一節點的問題,也會把數據復制多個副本部署到其他節點上進行復制,實現 Redis的高可用,實現對數據的冗餘備份,從而保證數據和服務的高可用。
主從復制
什麼是主從復制
主從復制,是指將一台Redis伺服器的數據,復制到其他的Redis伺服器。前者稱為主節點(master),後者稱為從節點(slave),數據的復制是單向的,只能由主節點到從節點。
默認情況下,每台Redis伺服器都是主節點;且一個主節點可以有多個從節點(或沒有從節點),但一個從節點只能有一個主節點。
主從復制的作用
1、數據冗餘: 主從復制實現了數據的熱備份,是持久化之外的一種數據冗餘方式。
2、故障恢復: 當主節點出現問題時,可以由從節點提供服務,實現快速的故障恢復;實際上是一種服務的冗餘。
3、負載均衡: 在主從復制的基礎上,配合讀寫分離,可以由主節點提供寫服務,由從節點提供讀服務(即寫Redis數據時應用連接主節點,讀Redis數據時應用連接從節點),分擔伺服器負載;尤其是在寫少讀多的場景下,通過多個從節點分擔讀負載,可以大大提高Redis伺服器的並發量。
4、讀寫分離: 可以用於實現讀寫分離,主庫寫、從庫讀,讀寫分離不僅可以提高伺服器的負載能力,同時可根據需求的變化,改變從庫的數量。
5、高可用基石: 除了上述作用以外,主從復制還是哨兵和集群能夠實施的基礎,因此說主從復制是Redis高可用的基礎。
主從復制啟用
從節點開啟主從復制,有3種方式:
1、配置文件: 在從伺服器的配置文件中加入 slaveof<masterip><masterport>。
2、啟動命令: redis-server啟動命令後加入 --slaveof<masterip><masterport>。
3、客戶端命令: Redis伺服器啟動後,直接通過客戶端執行命令 slaveof<masterip><masterport>,則該Redis實例成為從節點。
通過 info replication 命令可以看到復制的一些信息。
主從復制原理
主從復制過程大體可以分為3個階段:連接建立階段(即准備階段)、數據同步階段、命令傳播階段。
在從節點執行 slaveof 命令後,復制過程便開始運作,下面圖示可以看出復制過程大致分為6個過程。
主從配置之後的日誌記錄也可以看出這個流程。
1、保存主節點(master)信息
執行 slaveof 後 Redis 會列印如下日誌:
2、從節點與主節點建立網路連接
從節點(slave)內部通過每秒運行的定時任務維護復制相關邏輯,當定時任務發現存在新的主節點後,會嘗試與該節點建立網路連接。
從節點與主節點建立網路連接。
從節點會建立一個 socket 套接字,從節點建立了一個埠為51234的套接字,專門用於接受主節點發送的復制命令。從節點連接成功後列印如下日誌:
如果從節點無法建立連接,定時任務會無限重試直到連接成功或者執行 slaveofnoone 取消復制。
關於連接失敗,可以在從節點執行 info replication 查看 master_link_down_since_seconds 指標,它會記錄與主節點連接失敗的系統時間。從節點連接主節點失敗時也會每秒列印如下日誌,方便發現問題:
3、發送 ping 命令
連接建立成功後從節點發送 ping 請求進行首次通信, ping 請求主要目的如下:
如果發送 ping 命令後,從節點沒有收到主節點的 pong 回復或者超時,比如網路超時或者主節點正在阻塞無法響應命令,從節點會斷開復制連接,下次定時任務會發起重連。
從節點發送的 ping 命令成功返回,Redis 列印如下日誌,並繼續後續復制流程:
4、許可權驗證
如果主節點設置了 requirepass 參數,則需要密碼驗證,從節點必須配置 masterauth 參數保證與主節點相同的密碼才能通過驗證。如果驗證失敗復制將終止,從節點重新發起復制流程。
5、同步數據集
主從復制連接正常通信後,對於首次建立復制的場景,主節點會把持有的數據全部發送給從節點,這部分操作是耗時最長的步驟。
6、命令持續復制
當主節點把當前的數據同步給從節點後,便完成了復制的建立流程。接下來主節點會持續地把寫命令發送給從節點,保證主從數據一致性。
作者:LoyaltyLu
鏈接:https://segmentfault.com/a/1190000018268350
Ⅲ Redis 學習總結(3) Redis 哨兵模式
在實際開發中不會僅僅部署一個 Redis 伺服器,為了獲得高可用,Redis 哨兵模式 則是高可用的一種選擇。
本文先介紹下 哨兵模式,再介紹了如何在 springboot 項目中使用。
這意味著使用 Sentinel (哨兵模式),您可以創建一個 Redis 部署,它可抵抗某些類型的故障(進行故障遷移)而無需人工干預。
它有這些功能:
Sentinel 的分布式特性
Redis Sentinel 是一個分布式系統,多個 Sentinel 進程協同工作,有這些優勢:
部署前需要了解:
三個節點的基本配置
法定人數和仲裁
在配置 哨兵模式時,要指定一個 quorum,它可理解為「法定人數」。
假設有3 個 哨兵,法定人數為2。那麼:
哨兵和副本的自動發現
Sentinel 與其他 Sentinel 保持連接,以便相互檢查彼此的可用性並交換消息。
但是,您不需要在您運行的每個 Sentinel 實例中配置其他 Sentinel 地址的列表,因為 Sentinel 使用 Redis 實例的 Pub/Sub 功能來發現正在監視相同主節點和副本的其他 Sentinel。
類似地,您不需要配置附加到主伺服器的副本地址在哪裡,因為 Sentinel 會通過查詢 Redis 自動發現它們。
參考我的另一篇文章:
一般需要三個節點,每個節點有一個 redis 和一個哨兵。
下面再分別描述。
我這里按三個 節點,先配置 redis 的主從復制。1個節點作為 master ,2個副本。
配置節點1:master
這里的 redis 作為 master 主redis,其他兩個節點作為從節點。
我的文件夾名字叫 box1,這里編輯一個 box1/redis.conf 文件,主要配置內容如下:
配置節點2:副本
編輯一個 box2/redis.conf 文件,主要配置內容如下:
配置節點3:副本
編輯一個 box3/redis.conf 文件,主要配置內容如下:
分別啟動這三個redis
命令行執行 redis-server ,並指定 配置文件的路徑參數。
如何查看「主從復制」是否配置成功?
使用 info replication 命令,操作如下:
副本節點設置為只讀?
從 Redis 2.6 開始,副本已被默認設置為 只讀,無需額外配置。.
一般情況下,至少會需要三個哨兵對redis 進行監控,我們可以通過修改埠啟動多個sentinel 服務。
第一個哨兵:
哨兵的 默認埠是 26379 ,這里不改。
第二個哨兵:
修改哨兵埠。
第三個哨兵:
修改哨兵埠。
啟動哨兵
使用 redis-sentinel 命令,分別啟動這三個哨兵
哨兵的自動發現
當三個哨兵都啟動後,在各個哨兵的列印日誌里可以看到, 三個哨兵已互相發現了彼此的存在 。
至此,配置完畢了,我們有三個 redis,和三個哨兵,看下截圖。
模擬 master 宕機
按 ctrl+c 停止 master ,其位於 6379 。停止後,從日誌可以看到,哨兵和 redis副本先努力繼續連接 6379,反復幾次失敗後,開始選舉出新的 master。截圖如下:
至此,配置完畢。
我們看下 springboot 項目的客戶端如何配置 以訪問 哨兵模式的 redis。
Redis 哨兵支持
對於處理高可用Redis,Spring Data Redis 已經支持Redis Sentinel,使用RedisSentinelConfiguration,如下例所示:
Jedis 和 Lettuce 兩種 redis 驅動都可以支持。
RedisSentinelConfiguration 也可以用可以 通過 PropertySource 來設置,它允許您設置以下屬性:
配置application.yml
比如我這里修改我的 application.yml 文件如下:
我的配置文件示例: https://github.com/vir56k/java_demo/tree/master/redis-sentinel
我的 springboot 配置實例: https://github.com/vir56k/java_demo/tree/master/redis-sentinel/springboot_redis_demo
Redis官網 sentinel 介紹
https://redis.io/topics/sentinel
spring-data/data-redis
https://docs.spring.io/spring-data/data-redis/docs/current/reference/html/#redis:sentinel
https://www.cnblogs.com/jaycekon/p/6237562.html
END
Ⅳ win7怎麼查看redis埠
①開始→運行→輸入:CMD 點擊確定(或按回車鍵),打開命令提示符窗口。
②使用以下命令查看參數:netstat /?
netstat -a -n
③除此之外,還可以從任務管理器中看到埠開啟的狀態。
運行中輸入:taskmgr →確定→打開Task Manager(任務管理器)
④如果進程中沒有顯示PID項目,已調出來:查看→選擇列
⑤勾選 進程標識符PID →確定
⑥再查看進程中程序和埠的對應關系: BaiHI.exe→2944
參考資料:《如何查看埠使用狀態?》http://jingyan..com/article/066074d64fc93ec3c21cb096.html
Ⅳ ubuntu下redis 怎麼在程序中使用
一、獲取Redis
二、編譯安裝Redis
1、解壓源碼安裝包,通過tar -xvf redis-3.0.2.tar.gz解壓源碼,速度相當快;
2、進入解壓後的目錄,執行make編譯源碼;
make命令執行完成後,會在src目錄下生成6個可執行文件,分別是redis-server、redis-cli、redis-benchmark、redis-check-aof、redis-check-mp、redis-sentinel。
3、執行make install安裝,或者通過make PREFIX=/usr/local/redis install指定安裝目錄。這里默認安裝,默認將之前生成的可執行文件拷貝到/usr/local/bin目錄下;
配置運行
三、修改配置文件
1、將源碼目錄下redis配置文件redis.conf拷貝到/etc/redis目錄下。
2、修改配置項,根據需要;如果不修改,使用默認配置也可以;
四、啟動服務:
1、查看埠是否被佔用:netstat –ntlp |grep 6379
方式一:通過命令redis-server 啟動,可在命令後加上`&`號使redis以後台程序方式運行;
方式二:通過指定配置文件啟動;redis-server /etc/redis/redis.conf
默認安裝的路徑已經加入環境變數中,可直接在命令行執行命令;
五、命令客戶端檢測鏈接
1、連接之前可以先檢測服務是否啟動;
2、測試啟動 redis-cli ping 返回PONG,啟動成功。
停止Redis:
關閉服務
redis-cli shutdown
如果非默認埠,可指定埠:
redis-cli -p 6380 shutdown
簡單操作:
1、兩種連接方式:
1:window DOS方式:tentel主機IP埠號(默認為127.0.0.1:6379)
2:linux客戶端方式:redis-cli 主機IP 埠號(默認為127.0.0.1 6379)
2、命令行操作:
#redis-cli
redis 127.0.0.1:6379> set name clj
OK
redis 127.0.0.1:6379> get name
"clj"
Ⅵ redis支持不支持ws埠
不支持
redis默認埠號是6379,不支持其他埠。REmoteDIctionaryServer(Redis)是一個由SalvatoreSanfilippo寫的key-value存儲系統。
Ⅶ Redis停止的命令
Redis停止的命令
我的redis是部署在linux機器上的,而且是redis集群。下面的命令都是在linux上使用的。
執行後,輸出的記錄中,含有「redis-server」的行,全是運行的redis服務節點。
「redis-server」所在行的最後,會有「IP:埠號」,執行第3步停止redis集群時要使用。
第一行記錄,都要執行一次停止命令。
2. 進入redis-cli所在目錄
註:如果不知道redis-cli所在目錄,請使用如下命令查找(網上很多的人回答,redis-cli在redis/bin目錄,我的機器卻不是)
3. 停止redis服務,使用的IP、埠號為第1步查看出的IP、埠號。
第一步中的第一行記錄,都要執行一次停止命令。
註:不加「-h IP」參數時,會提示如下內容,停止是失敗的
Could not connect to Redis at 127.0.0.1:XXXX: Connection refused
4. 查看redis服務是否停止成功
執行後,輸出的記錄中,不存在含有「redis-server」的行,則redis服務停止成功。
原文:
YouLuoJv使用知識的小磚壘起質量、效率燈塔,希望可以照亮更多人的路
Ⅷ 了解redis底層原理,自己手寫實現jedis
一、Jedis實現原理
要自己手寫jedis,首先要了解jedis的原理,我們在命令窗口輸入set、get等命令背後的實現原理是什麼?
大白話講就是jedis通過tcp連接發送消息到redis伺服器,接收到回復消息後再解析出來即可(我們執行的命令如set name test等都是按協議構造的),消息按約定好的規范,這個規范就是RESP協議
resp協議官網說明:http://www.redis.cn/topics/protocol.html
二、RESP協議
resp協議定義了5種命令格式,間隔符號,在Linux下是r ,在Windows下是
1、單行的簡單字元串Simple Strings:以 "+"加號 開頭, 格式:+ 字元串 r
2、錯誤 Errors, 以"-"減號 開頭 格式:- 錯誤前綴 錯誤信息 r
3、整數型 Integers, 以 ":" 冒號開頭 格式:: 數字 r
SETNX、DEL、EXISTS、INCR、INCRBY、DECR、DECRBY、DBSIZE、LASTSAVE、RENAMENX、MOVE、LLEN、SADD、SREM、SISMEMBER、SCARD等命令都會返回整數
4、大字元串類型 Bulk Strings(多行字元串), 以 "#34;美元符號開頭,長度限制512M
格式:$ 字元串的長度 r 字元串 r
多用於返回二進制安全的字元串, "$0rnrn"代表空字元串,redis-cli收到後顯示的是"";"$-1rn"表示不存在,redis-cli收到顯示的是nil
5、數組類型 Arrays,以 "*"開頭 格式:* 數組元素個數 r 其他所有類型 (結尾不需要r )
不僅用於服務端向客戶端發送命令,也可用於客戶端向服務端發送命令
eg:
"*0r " #空數組
"*2r $3r foor $3r barr " #數組包含2個元素,分別是字元串foo和bar
"*3r :1r :2r :3r " #數組包含3個整數:1、2、3
"*5r :1r :2r :3r :4r $6r foobarr " #包含混合類型的數組
"*3r $3r SETr $2r aar $4r testr " #命令:SET aa test
三、代碼手寫實現
理解了jedis實現原理,我們就可以手寫實現了,當然前提是先搭建一個redis服務,我們在本機搭建了一個redis server,埠號是6379
Ⅸ redis 怎麼啟用多埠
1.Redis默認不是以守護進程的方式運行,可以通過該配置項修改,使用yes啟用守護進程daemonizeno2.當Redis以守護進程方式運行時,Redis默認會把pid寫入/var/run/redis.pid文件,可以通過pidfile指定pidfile/var/run/redis.pid3.指定Redis監聽埠,默認埠為6379,作者在自己的一篇博文中解釋了為什麼選用6379作為默認埠,因為6379在手機按鍵上MERZ對應的號碼,而MERZ取自義大利歌女AlessiaMerz的名字port63794.綁定的主機地址bind127.0.0.15.當客戶端閑置多長時間後關閉連接,如果指定為0,表示關閉該功能timeout3006.指定日誌記錄級別,Redis總共支持四個級別:debug、verbose、notice、warning,默認為verboseloglevelverbose7.日誌記錄方式,默認為標准輸出,如果配置Redis為守護進程方式運行,而這里又配置為日誌記錄方式為標准輸出,則日誌將會發送給/dev/nulllogfilestdout8.設置資料庫的數量,默認資料庫為0,可以使用SELECT命令在連接上指定資料庫iddatabases169.指定在多長時間內,有多少次更新操作,就將數據同步到數據文件,可以多個條件配合saveRedis默認配置文件中提供了三個條件:save9001save30010save6010000分別表示900秒(15分鍾)內有1個更改,300秒(5分鍾)內有10個更改以及60秒內有10000個更改。
Ⅹ Linux下安裝配置redis詳細教程,並配置哨兵模式
redis版本為redis-3.2.12,使用工具將安裝包上傳到data目錄。
在data目錄下創建文件夾redis,將redis安裝在此目錄。
第一步:解壓。
第二步:安裝,PREFIX=/data/redis用來設置安裝目錄。
到此,redis已經安裝完成,剩下就是配置和啟動服務。
進入redis目錄, 創建配置文件conf、日誌logs、資料庫mp、進程號pid四個目錄,用來存放對應的文件,這四個目錄也可以存放在其他文件夾,只要與配置文件中的配置一致即可,否則在啟動服務時會報錯。 其中bin目錄就是redis安裝成功後的一些命令文件。
redis服務配置一主二從,哨兵模式。注意:如果在實際開發中用不到哨兵模式,redis服務配置一主一從即可。
主Redis配置:redis_6379.conf
從Redis配置,redis_6380.conf和redis_6381.conf,與主Redis配置基本上一樣,不一樣的地方在於 埠、資料庫、日誌、pid文件名稱 ,都以6380或6381為標志, 最重要的地方是建立主從關系和同步驗證。
注意: 對只使用redis服務 ,只需要在主Redis裡面配置requirepass,在從Redis裡面配置masterauth,密碼保持一致,密碼盡可能復雜,以免被攻擊破解。
注意: 對只使用redis服務 ,如果從Redis也有必要加入訪問驗證,也可以設置requirepass,而且密碼可以與主Redis密碼不同。
將配置文件放置到/data/redis/conf目錄下,然後就可以啟動服務了。
啟動服務要按照主從順序依次啟動。
查看服務啟動情況:
也可以通過查看日誌文件來確認服務是否正常啟動。
通過客戶端登錄Redis驗證數據同步情況:
主Redis登錄驗證,設置數據:
從Redis登錄,獲取數據:從Redis並沒有設置密碼,所以無需驗證就可以操作。
配置哨兵模式:
Redis Sentinel集群通常由3到5個節點組成,如果個別節點掛了,集群還可以正常運作。Sentinel負責監控Redis集群的 健康 情況。
如果主Redis掛掉,Sentinel集群會通過投票選擇一個新的主Redis。 當原來的主Redis恢復時,它會被當做新的主Redis的從Redis重新加入Redis集群。
設置連接master和slave的密碼,需要注意的是sentinel不能分別為master和slave設置不同的密碼,因此master和slave的密碼必須設置相同。也就是說主Redis和從Redis都必須設置requirepass和masterauth,而且密碼必須相同。
sentinel.conf配置信息:
將該配置文件放置到/data/redis/conf目錄下,啟動sentinel服務:
驗證sentinel是否起作用,可以手工shutdown掉主Redis。
這時從Redis想要訪問主Redis同步數據就會提示錯誤信息:
sentinel在監測到主Redis宕機之後,通過選舉,將一個從Redis選定為新的主Redis。通過查看sentinel日誌可以發現,選定6380為新的主Redis,同時將另外兩個Redis作為從Redis。
注意:選定6380為主Redis後,所有的配置文件都會被修改,主要是重新建立主從關系。
6379會新增:slaveof 127.0.0.1 6380
6380會刪掉:slaveof 127.0.0.1 6379
6381會修改:slaveof 127.0.0.1 6380
由於6379服務已經關掉,所以雖然sentinel將6379作為6380的從服務,但是沒有真正的建立。
重新啟動6379服務,這時sentinel會重建建立一次主從關系: