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

歡迎訪問 生活随笔!

生活随笔

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

数据库

Redis的编译安装

發(fā)布時間:2023/11/29 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis的编译安装 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

介紹

? ? ? ?redis是一個key-value存儲系統(tǒng)。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)list(鏈表)set(集合)zset(sorted set --有序集合)hash(哈希類型)。這些數(shù)據(jù)類型都支持push/popadd/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎(chǔ)上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別的是redis會周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎(chǔ)上實現(xiàn)了master-slave(主從)同步。

編譯安裝

下載redis

############目前最新穩(wěn)定版##########[root@redis?~]#?wget?http://download.redis.io/releases/redis-2.8.19.tar.gz

解壓縮redis

[root@redis?~]#?tar?xzf?redis-2.8.19.tar.gz

編譯redis

redis的編譯非常簡單,已經(jīng)有現(xiàn)成的Makefile文件,直接運行make命令即可

[root@redis?redis-2.8.19]#?cd?redis-2.8.19[root@redis?redis-2.8.19]#?make

make命令執(zhí)行完成后,會在src目錄下生成6個可執(zhí)行文件,分別是redis-serverredis-cliredis-benchmarkredis-check-aofredis-check-dumpredis-sentinel,它們的作用如下:

redis-server:?????????????Redis服務(wù)器的daemon啟動程序redis-cli:????????????????Redis命令行操作工具。當然,你也可以用telnet根據(jù)其純文本協(xié)議來操作redis-benchmark:??????????Redis性能測試工具,測試Redis在你的系統(tǒng)及你的配置下的讀寫性能redis-check-aof:??????????更新日志檢查redis-check-dump:?????????用于本地數(shù)據(jù)庫檢查redis-sentinel:???????????Redis實例的監(jiān)控管理、通知和實例失效備援服務(wù),是Redis集群的管理工具

安裝redis

[root@redis?src]#?make?install

配置redis的配置文件

[root@redis?redis-2.8.19]#?cp?redis.conf?/etc/##########編輯Redis配置文件###################[root@redis?redis-2.8.19]#?vim?/etc/redis.conf????daemonize?yes???????????????????????#37行????#是否以后臺daemon方式運行,默認不是后臺運行????pidfile?/var/run/redis/redis.pid????#41行????#redis的PID文件路徑????bind?10.168.85.25???????????????????#64行????#綁定主機IP,默認值為127.0.0.1,我們是跨機器運行,所以需要更改????logfile?/var/log/redis/redis.log????#104行???#定義log文件位置,模式log信息定向到stdout,輸出到/dev/null????save?60?1000????????????????????????#145行???#重新定義快照的頻率????dir?/usr/local/rdbfile??????????????#188行???#本地數(shù)據(jù)庫存放路徑,默認為./,編譯安裝默認存在在/usr/local/bin下

啟動測試Redis服務(wù)器

#############啟動Redis服務(wù)器############[root@redis?redis-2.8.19]#?redis-server?/etc/redis.conf#############查看是否啟動成功###########[root@redis?redis-2.8.19]#?ss?-tanlp?|?grep?redisLISTEN?????0??????128????????????10.168.85.25:6379?????????????????????*:*??????users:(("redis-server",17379,4))#############測試Redis##################[root@redis?redis-2.8.19]#?redis-cli?-h?10.168.85.25?-p?637910.168.85.25:6379>?set?test?helloOK10.168.85.25:6379>?get?test"hello"

更改內(nèi)核信息

#############查看日志信息###############[root@redis?redis-2.8.19]#?tail?-f?/var/log/redis/redis.log[5033]?04?Jan?15:47:05.378?#?Server?started,?Redis?version?2.8.19[5033]?04?Jan?15:47:05.379?#?WARNING?overcommit_memory?is?set?to?0!?Background?save?may?fail?under?low?memory?condition.?To?fix?this?issue?add?'vm.overcommit_memory?=?1'?to?/etc/sysctl.conf?and?then?reboot?or?run?the?command?'sysctl?vm.overcommit_memory=1'?for?this?to?take?effect.[5033]?04?Jan?15:47:05.379?#?WARNING?you?have?Transparent?Huge?Pages?(THP)?support?enabled?in?your?kernel.?This?will?create?latency?and?memory?usage?issues?with?Redis.?To?fix?this?issue?run?the?command?'echo?never?>?/sys/kernel/mm/transparent_hugepage/enabled'?as?root,?and?add?it?to?your?/etc/rc.local?in?order?to?retain?the?setting?after?a?reboot.?Redis?must?be?restarted?after?THP?is?disabled.[5033]?04?Jan?15:47:05.380?#?WARNING:?The?TCP?backlog?setting?of?511?cannot?be?enforced?because?/proc/sys/net/core/somaxconn?is?set?to?the?lower?value?of?128.[5033]?04?Jan?15:47:05.380?*?DB?loaded?from?disk:?0.000?seconds[5033]?04?Jan?15:47:05.380?*?The?server?is?now?ready?to?accept?connections?on?port?6379日志顯示有兩個關(guān)于內(nèi)核設(shè)置的警告信息!##############sysctl文件###############[root@redis?~]#?echo?"vm.overcommit_memory=1"?>>?/etc/sysctl.conf[root@redis?~]#?sysctl?-p#############kerbel####################[root@redis?~]#?echo?never?>?/sys/kernel/mm/transparent_hugepage/enabled?

重新啟動Redis服務(wù)器

#######將緩存保存到硬盤上#####[root@redis?~]#?redis-cli?-h?10.168.85.25?-p?6379?BGSAVEBackground?saving?started#######關(guān)閉Redis#############[root@redis?~]#?redis-cli?-h?10.168.85.25?-p?6379?SHUTDOWN########啟動Redis############[root@redis?~]#?redis-server?/etc/redis.conf

編輯Redis啟動腳本

[root@redis?~]#?vi?/etc/init.d/redis#!/bin/sh##?redis????????init?file?for?starting?up?the?redis?daemon##?chkconfig:???-?20?80#?description:?Starts?and?stops?the?redis?daemon.#?Source?function?library..?/etc/rc.d/init.d/functionsname="redis-server"exec="/usr/local/bin/$name"???????????????????????????????????#?指定redis-server命令的位置(whereis?redis-server)pidfile="/var/run/redis/redis.pid"????????????????????????????#?指定redis的pid文件路徑(和配置文件里保持一致)REDIS_CONFIG="/etc/redis.conf"????????????????????????????????#?指定redis的配置文件路徑[?-e?/etc/sysconfig/redis?]?&&?.?/etc/sysconfig/redislockfile=/var/lock/subsys/redisstart()?{????[?-f?$REDIS_CONFIG?]?||?exit?6????[?-x?$exec?]?||?exit?5????echo?-n?$"Starting?$name:?"????daemon?--user?${REDIS_USER-redis}?"$exec?$REDIS_CONFIG"????retval=$?????echo????[?$retval?-eq?0?]?&&?touch?$lockfile????return?$retval}stop()?{????echo?-n?$"Stopping?$name:?"????killproc?-p?$pidfile?$name????retval=$?????echo????[?$retval?-eq?0?]?&&?rm?-f?$lockfile????return?$retval}restart()?{????stop????start}reload()?{????false}rh_status()?{????status?-p?$pidfile?$name}rh_status_q()?{????rh_status?>/dev/null?2>&1}?
case?"$1"?in????start)????????rh_status_q?&&?exit?0????????$1????????;;????stop)????????rh_status_q?||?exit?0????????$1????????;;????restart)????????$1????????;;????reload)????????rh_status_q?||?exit?7????????$1????????;;????force-reload)????????force_reload????????;;????status)????????rh_status????????;;????condrestart|try-restart)????????rh_status_q?||?exit?0????????restart????????;;????*)????????echo?$"Usage:?$0?{start|stop|status|restart|condrestart|try-restart}"????????exit?2esacexit?$?[root@redis?~]#?chmod?700?/etc/init.d/redis[root@redis?~]#?servcie?redis?restart

附加信息

Redis無法編譯安裝報錯處理?

###########make時錯誤信息#########[root@redis?redis-2.8.19]#?makecd?src?&&?make?allmake[1]:?Entering?directory?`/root/redis-2.8.19/src'????CC?adlist.oIn?file?included?from?adlist.c:34:zmalloc.h:50:31:?error:?jemalloc/jemalloc.h:?No?such?file?or?directoryzmalloc.h:55:2:?error:?#error?"Newer?version?of?jemalloc?required"make[1]:?***?[adlist.o]?Error?1make[1]:?Leaving?directory?`/root/redis-2.8.19/src'make:?***?[all]?Error?2############解決方法#############make?MALLOC=libc

vm.overcommit_memory參數(shù)解析

如果內(nèi)存情況比較緊張的話,需要設(shè)定內(nèi)核參數(shù)overcommit_memory,指定內(nèi)核針對內(nèi)存分配的策略,其值可以是012
? ? ? ?0,表示內(nèi)核將檢查是否有足夠的可用內(nèi)存供應(yīng)用進程使用;如果有足夠的可用內(nèi)存,內(nèi)存申請允許;否則,內(nèi)存申請失敗,并把錯誤返回給應(yīng)用進程。
? ? ? ?1,表示內(nèi)核允許分配所有的物理內(nèi)存,而不管當前的內(nèi)存狀態(tài)如何。
? ? ? ?2,表示內(nèi)核允許分配超過所有物理內(nèi)存和交換空間總和的內(nèi)存
Redisdump數(shù)據(jù)的時候,會fork出一個子進程,理論上child進程所占用的內(nèi)存和parent是一樣的,比如parent占用的內(nèi)存為?8G,這個時候也要同樣分配8G的內(nèi)存給child,?如果內(nèi)存無法負擔,往往會造成redis服務(wù)器的down機或者IO負載過高,效率下降。所以這里比較優(yōu)化的內(nèi)存分配策略應(yīng)該設(shè)置為?1(表示內(nèi)核允許分配所有的物理內(nèi)存,而不管當前的內(nèi)存狀態(tài)如何)
設(shè)置方式有兩種,需確定當前用戶的權(quán)限活使用root用戶修改:
? ? ?1:重設(shè)文件?echo 1 > /proc/sys/vm/overcommit_memory(默認為0)
? ? ?2?echo "vm.overcommit_memory=1" >> /etc/sysctl.conf ?&&?sysctl -p

?

轉(zhuǎn)載于:https://blog.51cto.com/pangge/1599048

總結(jié)

以上是生活随笔為你收集整理的Redis的编译安装的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。