日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis安装部署配置说明

發布時間:2024/9/20 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis安装部署配置说明 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.????redis簡介??????

????????????? ?Redis是個高性能的key-value數據庫,它的key具有豐富的數據結構:string,hash,list set和sorted set。作為NOSQL,比起memcache之類,不僅僅key數據結構豐富,而且具有持久化的功能,并且能夠支持主從復制,很方便構建集群。redis高性能很大程度上源于它是個內存型數據庫,它的高性能表現在:set操作11w/s,get操作8.1w/s,與其他類型數據庫性能差異,可以而參考:http://timyang.net/data/mcdb-tt-redis/??。為了進一步加深對redis的理解總結,我打算寫個redis系列的博客。這里主要談談redis安裝部署及運維維護。

?

2.????下載安裝

1.? [root@xsf003?tool]#?wget?-c?http://redis.googlecode.com/files/redis-2.4.17.tar.gz????#下載??

2.? [root@xsf003?tool]#?tar?-zxvf?redis-2.4.17.tar.gz???#解壓??

3.? [root@xsf003?tool]#?cd?redis-2.4.17??

4.? [root@xsf003?redis-2.4.17]#?make??#編譯??

5.? [root@xsf003?redis-2.4.17]#?make?install?#安裝??

說明:其實 make install 就是:

cp -p redis-server/usr/local/bin

cp -p redis-benchmark/usr/local/bin

cp -p redis-cli /usr/local/bin

cp -p redis-check-dump/usr/local/bin

cp -p redis-check-aof/usr/local/bin

這樣,redis就安裝成功了。

接下來就是啟動Redis了, 上面編譯后生成的那些可執行文件拷貝到了/usr/local/bin目錄下面, 他們的作用分別是:

redis-server:Redis服務器的daemon啟動程序

redis-cliRedis命令行操作工具。當然,你也可以用telnet根據其純文本協議來操作

redis-benchmarkRedis性能測試工具,測試Redis在你的系統及你的配置下的讀寫性能

?

?

?

安裝完畢,常用工具會自動拷貝到/user/loca/bin目錄下。做為服務器,我們常常還需要把redis設置成開機自啟動,源碼包中有個很好用的腳本,執行腳步根據提示輸入即可。

1.? ?[root@xsf003?redis-2.4.17]#?cd?utils/??

2.? [root@xsf003?utils]#?./install_server.sh???

3.? Welcome?to?the?redis?service?installer??

4.? This?script?will?help?you?easily?set?up?a?running?redis?server??

5.? ??

6.? ??

7.? Please?select?the?redis?port?for?this?instance:?[6379]???

8.? Selecting?default:?6379??

9.? Please?select?the?redis?config?file?name?[/etc/redis/6379.conf]???

10. Selected?default?-?/etc/redis/6379.conf??

11. Please?select?the?redis?log?file?name?[/var/log/redis_6379.log]???

12. Selected?default?-?/var/log/redis_6379.log??

13. Please?select?the?data?directory?for?this?instance?[/var/lib/redis/6379]???

14. Selected?default?-?/var/lib/redis/6379??

15. Please?select?the?redis?executable?path?[/usr/local/bin/redis-server]???

16. Copied?/tmp/6379.conf?=>?/etc/init.d/redis_6379??

17. Installing?service...??

18. Successfully?added?to?chkconfig!??

19. Successfully?added?to?runlevels?345!??

20. Starting?Redis?server...??

21. Installation?successful!?

3.????開關服務

1.? ?[root@xsf003?utils]#?/etc/init.d/redis_6379?stop???#關閉??

2.? [root@xsf003?utils]#?/etc/init.d/redis_6379?start??#啟動??

?

也可以用下面類似的命令直接啟動關閉redis服務:

1.???? /usr/local/bin/redis-server?/etc/redis/redis.conf???#指定配置文件?啟動??

2.???? /usr/local/bin/redis-cli?-p?6379?shutdown???#?關閉,如果默認端口6379?可以直接?/usr/local/bin/redis-cli?shutdown

啟動 redis 會出現的問題

Warning: 32 bit instancedetected but no memory limit set. Setting 3 GB maxmemory limit with'noeviction' policy now.

解決方法:修改配置文件 redis.conf?maxmemory設置為 maxmemory1024000000 #分配256M內存

WARNING overcommit_memory isset to 0! Background save may fail under low memory condition. To fix thisissue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or runthe command 'sysctl vm.overcommit_memory=1' for this to take effect.

解決方法:警告:過量使用內存設置為0!在低內存環境下,后臺保存可能失敗。為了修正這個問題,請在/etc/sysctl.conf添加一項 'vm.overcommit_memory = 1' ,然后重啟(或者運行命令'sysctl vm.overcommit_memory=1')使其生效。

當啟動的時候沒有任何信息,表明啟動成功。也可以使用 "netstat -tnl"查看6379端口是否啟動。

?

?

4.????通過客戶端命令行工具連接redis服務查看redis相關信息

1)????連接

1.? ?[root@xsf003?utils]#?redis-cli???

2.? redis?127.0.0.1:6379>?

2)????其他指令

1.? redis?127.0.0.1:6379>?info??#查看server版本內存使用連接等信息??

2.? redis?127.0.0.1:6379>?client?list??#獲取客戶連接列表??

3.? redis?127.0.0.1:6379>?client?kill?127.0.0.1:33441?#終止某個客戶端連接??

4.? redis?127.0.0.1:6379>?dbsize?#當前保存key的數量??

5.? redis?127.0.0.1:6379>?save?#立即保存數據到硬盤??

6.? redis?127.0.0.1:6379>?bgsave?#異步保存數據到硬盤??

7.? redis?127.0.0.1:6379>?flushdb?#當前庫中移除所有key??

8.? redis?127.0.0.1:6379>?flushall?#移除所有key從所有庫中??

9.? redis?127.0.0.1:6379>?lastsave?#獲取上次成功保存到硬盤的unix時間戳??

10. redis?127.0.0.1:6379>?monitor?#實時監測服務器接收到的請求??

11. redis?127.0.0.1:6379>?slowlog?len?#查詢慢查詢日志條數??

12. (integer)?3???

13. redis?127.0.0.1:6379>?slowlog?get?#返回所有的慢查詢日志,最大值取決于slowlog-max-len配置??

14. redis?127.0.0.1:6379>?slowlog?get?2?#打印兩條慢查詢日志??

15. redis?127.0.0.1:6379>?slowlog?reset?#清空慢查詢日志信息??

?

5.????編譯 phpredis

unzip phpredis-master.zip

cd phpredis-master

/usr/local/php/bin/phpize
./configure –with-php-config=/usr/local/php/bin/php-config
make && make install

修改 php.ini文件。加載 redis.so模塊,重啟 Apache

?

6.????Redis.conf配置說明

1)????其實redis.conf文件中,對每一個配置項都有非常詳細的注釋,本文只是將其進行翻譯,同時加了點小料。本文檔所對應的redis版本為2.0.4
當配置中需要配置內存大小時,可以使用 1k, 5GB, 4M 等類似的格式,其轉換方式如下(不區分大小寫):

view source

print?

1

1k? => 1000????? bytes

2

1kb => 1024????? bytes

3

1m? => 1000000?? bytes

4

1mb => 1024*1024 bytes

2)????daemonizeno默認情況下,redis不是在后臺運行的,如果需要在后臺運行,把該項的值更改為yes

3)????pidfile/var/run/redis.pidredis在后臺運行的時候,Redis默認會把pid文件放在/var/run/redis.pid,你可以配置到其他地址。當運行多個redis服務時,需要指定不同的pid文件和端口

4)????port6379指定redis運行的端口

5)????bind127.0.0.1指定redis只接收來自于該IP地址的請求,如果不進行設置,那么將處理所有請求,在生產環境中最好設置該項

6)????timeout300設置客戶端連接時的超時時間,單位為秒。當客戶端在這段時間內沒有發出任何指令,那么關閉該連接

7)????logleveldebuglog等級分為4級,debug, verbose, notice, warning。生產環境下一般開啟notice

8)????logfilestdout配置log文件地址,默認使用標準輸出,即打印在命令行終端的窗口上

9)????databases16設置數據庫的個數,可以使用SELECT命令來切換數據庫。默認使用的數據庫是 DB 0

10)??save9001 設置Redis進行數據庫鏡像的頻率。

view source

print?

#?? after 900 sec (15 min) if at least 1 key changed

#?? after 300 sec (5 min) if at least 10 keys changed

#?? after 60 sec if at least 10000 keys changed

在給定的例子中,我們可以倒過來理解:

view source

print?

if(在60秒之內有10000個keys發生變化時){

進行鏡像備份

}else?if(在300秒之內有10個keys發生了變化){

進行鏡像備份

}else?if(在900秒之內有1個keys發生了變化){

進行鏡像備份

}

所以,按照這里的配置,每隔60秒,redis會檢查現在發生了多少變化,是不是應該進行鏡像備份了。但是當數據庫比較大時,在我的測試中,鏡像備份的速度非常慢,并由此導致redis內存暴漲直至crash

11)??rdbcompressionyes在進行鏡像備份時,是否進行壓縮

12)??dbfilenamedump.rdb鏡像備份文件的文件名

13)??dir/opt/local/var/db/redis/ 數據庫鏡像備份的文件放置的路徑。這里的路徑跟文件名要分開配置是因為redis在進行備份時,先會將當前數據庫的狀態寫入到一個臨時文件中,等備份完成時,再把該該臨時文件替換為上面所指定的文件,而這里的臨時文件和上面所配置的備份文件都會放在這個指定的路徑當中。

14)??slaveof?設置該數據庫為其他數據庫的從數據庫

15)??masterauth?當主數據庫連接需要密碼驗證時,在這里指定

16)??requirepassfoobared設置客戶端連接后進行任何其他指定前需要使用的密碼。警告:因為redis速度相當快,所以在一臺比較好的服務器下,一個外部的用戶可以在一秒鐘進行150K次的密碼嘗試,這意味著你需要指定非常非常強大的密碼來防止暴力破解。

17)??maxclients128限制同時連接的客戶數量。當連接數超過這個值時,redis將不再接收其他連接請求,客戶端嘗試連接時將收到error信息。

18)??maxmemory?設置redis能夠使用的最大內存。當內存滿了的時候,如果還接收到set命令,redis將先嘗試剔除設置過expire信息的key,而不管該key的過期時間還沒有到達。在刪除時,將按照過期時間進行刪除,最早將要被過期的key將最先被刪除。如果帶有expire信息的key都刪光了,那么將返回錯誤。這樣,redis將不再接收寫請求,只接收get請求。maxmemory的設置比較適合于把redis當作于類似memcached的緩存來使用。

19)??appendonlyno默認情況下,redis會在后臺異步的把數據庫鏡像備份到磁盤,但是該備份是非常耗時的,而且備份也不能很頻繁,如果發生諸如拉閘限電、拔插頭等狀況,那么將造成比較大范圍的數據丟失。所以redis提供了另外一種更加高效的數據庫備份及災難恢復方式。開啟appendonly模式之后,redis會把所接收到的每一次寫操作請求都追加到appendonly.aof文件中,當redis重新啟動時,會從該文件恢復出之前的狀態。但是這樣會造成appendonly.aof文件過大,所以redis還支持了BGREWRITEAOF指令,對appendonly.aof進行重新整理。所以我認為推薦生產環境下的做法為關閉鏡像,開啟appendonly.aof,同時可以選擇在訪問較少的時間每天對appendonly.aof進行重寫一次。

20)??appendfsynceverysec設置對appendonly.aof文件進行同步的頻率。always表示每次有寫操作都進行同步,everysec表示對寫操作進行累積,每秒同步一次。這個需要根據實際業務場景進行配置

21)??vm-enabledno是否開啟虛擬內存支持。因為redis是一個內存數據庫,而且當內存滿的時候,無法接收新的寫請求,所以在redis 2.0中,提供了虛擬內存的支持。但是需要注意的是,redis中,所有的key都會放在內存中,在內存不夠時,只會把value值放入交換區。這樣保證了雖然使用虛擬內存,但性能基本不受影響,同時,你需要注意的是你要把vm-max-memory設置到足夠來放下你的所有的key

22)??vm-swap-file/tmp/redis.swap 設置虛擬內存的交換文件路徑

23)??vm-max-memory0 這里設置開啟虛擬內存之后,redis將使用的最大物理內存的大小。默認為0,redis將把他所有的能放到交換文件的都放到交換文件中,以盡量少的使用物理內存。在生產環境下,需要根據實際情況設置該值,最好不要使用默認的0

24)??vm-page-size32 設置虛擬內存的頁大小,如果你的value值比較大,比如說你要在value中放置博客、新聞之類的所有文章內容,就設大一點,如果要放置的都是很小的內容,那就設小一點。

25)? vm-pages 134217728設置交換文件的總的page數量,需要注意的是,page table信息會放在物理內存中,每8個page就會占據RAM中的1個byte。總的虛擬內存大小 = vm-page-size * vm-pages

26)??vm-max-threads4 設置VMIO同時使用的線程數量。因為在進行內存交換時,對數據有編碼和解碼的過程,所以盡管IO設備在硬件上本上不能支持很多的并發讀寫,但是還是如果你所保存的vlaue值比較大,將該值設大一些,還是能夠提升性能的

27)??glueoutputbufyes把小的輸出緩存放在一起,以便能夠在一個TCPpacket中為客戶端發送多個響應,具體原理和真實效果我不是很清楚。所以根據注釋,你不是很確定的時候就設置成yes

28)??hash-max-zipmap-entriesredis 2.0中引入了hash數據結構。當hash中包含超過指定元素個數并且最大的元素沒有超過臨界時,hash將以一種特殊的編碼方式(大大減少內存使用)來存儲,這里可以設置這兩個臨界值

29)??activerehashingyes開啟之后,redis將在每100毫秒時使用1毫秒的CPU時間來對redishash表進行重新hash,可以降低內存的使用。當你的使用場景中,有非常嚴格的實時性需要,不能夠接受Redis時不時的對請求有2毫秒的延遲的話,把這項配置為no。如果沒有這么嚴格的實時性要求,可以設置為yes,以便能夠盡可能快的釋放內存


來源:http://www.360doc.com/content/14/0513/14/16202355_377235994.shtml

總結

以上是生活随笔為你收集整理的Redis安装部署配置说明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。