posts - 110, comments - 101, trackbacks - 0, articles - 7
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          redis linux安裝 成功案例

          Posted on 2012-04-01 15:05 云云 閱讀(1110) 評論(0)  編輯  收藏
          redis作為NoSQL數(shù)據(jù)庫的一種應(yīng)用,響應(yīng)速度和命中率上還是比較高效的。項目中需要用集中式可橫向擴(kuò)展的緩存框架,做了一點調(diào)研,即便redis、memcached存在效率上的差異(具體比較參考http://timyang.net/data/mcdb-tt-redis/),但其實都能滿足目前項目的需求;但是redis還是比較風(fēng)騷的,支持鏈表和集合操作,支持正則表達(dá)式查找key,目前項目緩存的結(jié)果大多是鏈表,如果鏈表新增或者修改數(shù)據(jù)的話,redis就體現(xiàn)出了極大的優(yōu)勢(memcached只能重新加載鏈表,redis可以對鏈表新增或者修改)

          1:下載redis
          下載地址 http://code.google.com/p/redis/downloads/list
          推薦下載redis-1.2.6.tar.gz,之前這個版本同事已經(jīng)有成功安裝運行的經(jīng)驗,redis-2.0.4.tar.gz 這個版本我安裝后無法操作緩存數(shù)據(jù),具體原因后續(xù)再說

          2:安裝redis
          下載后解壓 tar zxvf redis-1.2.6.tar.gz 到任意目錄,例如/usr/local/redis-1.2.6

          解壓后,進(jìn)入redis目錄
              cd /usr/local/redis-1.2.6  
              make  

          拷貝文件
          cp redis.conf /etc/ 這個文件時redis啟動的配置文件
          cp redis-benchmark redis-cli redis-server /usr/bin/ #這個倒是很有用,這樣就不用再執(zhí)行時加上./了,而且可以在任何地方執(zhí)行

          設(shè)置內(nèi)存分配策略(可選,根據(jù)服務(wù)器的實際情況進(jìn)行設(shè)置)
          /proc/sys/vm/overcommit_memory
          可選值:0、1、2。
          0, 表示內(nèi)核將檢查是否有足夠的可用內(nèi)存供應(yīng)用進(jìn)程使用;如果有足夠的可用內(nèi)存,內(nèi)存申請允許;否則,內(nèi)存申請失敗,并把錯誤返回給應(yīng)用進(jìn)程。
          1, 表示內(nèi)核允許分配所有的物理內(nèi)存,而不管當(dāng)前的內(nèi)存狀態(tài)如何。
          2, 表示內(nèi)核允許分配超過所有物理內(nèi)存和交換空間總和的內(nèi)存

          值得注意的一點是,redis在dump數(shù)據(jù)的時候,會fork出一個子進(jìn)程,理論上child進(jìn)程所占用的內(nèi)存和parent是一樣的,比如parent占用的內(nèi)存為8G,這個時候也要同樣分配8G的內(nèi)存給child,如果內(nèi)存無法負(fù)擔(dān),往往會造成redis服務(wù)器的down機(jī)或者IO負(fù)載過高,效率下降。所以這里比較優(yōu)化的內(nèi)存分配策略應(yīng)該設(shè)置為 1(表示內(nèi)核允許分配所有的物理內(nèi)存,而不管當(dāng)前的內(nèi)存狀態(tài)如何)

          開啟redis端口,修改防火墻配置文件
              vi /etc/sysconfig/iptables  

          加入端口配置
              -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT  

          重新加載規(guī)則
              service iptables restart   

          3:啟動redis服務(wù)
              [root@Architect redis-1.2.6]# pwd  
              /usr/local/redis-1.2.6  
              [root@Architect redis-1.2.6]# redis-server /etc/redis.conf  

          查看進(jìn)程,確認(rèn)redis已經(jīng)啟動

              [root@Architect redis-1.2.6]# ps -ef | grep redis  
              root       401 29222  0 18:06 pts/3    00:00:00 grep redis  
              root     29258     1  0 16:23 ?        00:00:00 redis-server /etc/redis.conf  

          如果這里啟動redis服務(wù)失敗,一般情況下是因為redis.conf文件有問題,建議檢查或找個可用的配置文件進(jìn)行覆蓋,避免少走彎路,這里建議,修改redis.conf,設(shè)置redis進(jìn)程為后臺守護(hù)進(jìn)程

              # By default Redis does not run as a daemon. Use 'yes' if you need it.  
              # Note that Redis will write a pid file in /var/run/redis.pid when daemonized.  
              daemonize yes  

          4:測試redis
              [root@Architect redis-1.2.6]# redis-cli  
              redis> set name songbin  
              OK  
              redis> get name   
              "songbin"  

          5:關(guān)閉redis服務(wù)
              redis-cli shutdown  

          redis服務(wù)關(guān)閉后,緩存數(shù)據(jù)會自動dump到硬盤上,硬盤地址為redis.conf中的配置項dbfilename dump.rdb所設(shè)定
          強(qiáng)制備份數(shù)據(jù)到磁盤,使用如下命令

              redis-cli save 或者 redis-cli -p 6380 save(指定端口)

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 烟台市| 米易县| 筠连县| 阿瓦提县| 卓资县| 武清区| 青岛市| 潞西市| 姜堰市| 泰州市| 陆河县| 三台县| 衡阳市| 五华县| 永福县| 高密市| 盘山县| 陇川县| 梁平县| 济宁市| 庐江县| 太原市| 钟山县| 武平县| 堆龙德庆县| 米易县| 海林市| 咸宁市| 肃南| 大余县| 汉中市| 法库县| 来凤县| 崇信县| 灵寿县| 喀喇沁旗| 大丰市| 五大连池市| 定陶县| 始兴县| 云阳县|