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

          redis linux安裝 成功案例

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

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

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

          解壓后,進入redis目錄
              cd /usr/local/redis-1.2.6  
              make  

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

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

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

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

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

          重新加載規則
              service iptables restart   

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

          查看進程,確認redis已經啟動

              [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服務失敗,一般情況下是因為redis.conf文件有問題,建議檢查或找個可用的配置文件進行覆蓋,避免少走彎路,這里建議,修改redis.conf,設置redis進程為后臺守護進程

              # 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:關閉redis服務
              redis-cli shutdown  

          redis服務關閉后,緩存數據會自動dump到硬盤上,硬盤地址為redis.conf中的配置項dbfilename dump.rdb所設定
          強制備份數據到磁盤,使用如下命令

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

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


          網站導航:
           
          主站蜘蛛池模板: 余姚市| 界首市| 大名县| 青浦区| 宁蒗| 天全县| 宽甸| 大埔县| 望都县| 漳州市| 弥渡县| 和平区| 禹州市| 永新县| 白河县| 南华县| 芒康县| 灵川县| 五华县| 天峨县| 云梦县| 大洼县| 昌江| 柳河县| 乌海市| 海晏县| 香格里拉县| 山阴县| 保靖县| 如东县| 刚察县| 长岭县| 广东省| 尚志市| 保靖县| 淳化县| 西盟| 清徐县| 瓦房店市| 衡南县| 株洲县|