<em id="1rarx"><ins id="1rarx"></ins></em><sup id="1rarx"></sup>

<progress id="1rarx"><tr id="1rarx"></tr></progress>
<sup id="1rarx"><menu id="1rarx"></menu></sup>
<menuitem id="1rarx"></menuitem><optgroup id="1rarx"><small id="1rarx"><sub id="1rarx"></sub></small></optgroup>

    <sup id="1rarx"><menu id="1rarx"></menu></sup>
    <div id="1rarx"></div><div id="1rarx"><tr id="1rarx"><object id="1rarx"></object></tr></div>
      <em id="1rarx"></em>

          存檔

          ‘redis’ 分類的存檔

          redis常用命令

          2015年1月9日 2 條評論

          1. redis查看當前所有的key

          2. 查看當前redis的配置信息

          3. MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.

          強制停止redis快照導致,redis運行用戶沒有權限寫rdb文件或者磁盤空間滿了,解決辦法:

          例如:

          閱讀全文...

          分類: redis 標簽: ,

          動態更新運行中程序的配置信息

          2014年10月18日 3 條評論

          一個程序投產線上使用基本不會停下來,一旦業務需求改變或者增加需求,需要修改配置文件時,往往需要停機修改配置后重新啟動服務。

          這個過程進程少還可以接受,如果停一次機要很長時間而且需要授權更新,這個是難以接受的方法。

          想了幾個辦法
          1.放到內存,例如redis這種字典,這樣可以動態修改redis的值來實現動態更新,問題是如何保證redis出問題不影響原程序呢?
          重redis里讀到map,如果需要的配置不在,到內存里去讀,這樣只能增加配置,想要刪除配置好像不理想。

          2.定時load配置文件,

          3.通過信號load,

          2.和3.不好協調多個進程服務一致性問題。

          真傷腦筋啊。

          有人知道好方法,告訴我一下。

          memcache和redis區別

          2014年4月27日 沒有評論

          memcache官方定義

          Free & open source, high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.

          redis官方定義
          Redis is an open source, BSD licensed, advanced key-value store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets.

          版權相同

          它們都是使用的bsd協議,使用它的項目可以用于商業用戶,不必發布二次修改的代碼,可以修改源代碼。

          數據類型

          redis數據類型豐富,支持set liset等類型
          memcache支持簡單數據類型,需要客戶端自己處理復雜對象

          持久性

          redis支持數據落地持久化存儲
          memcache不支持數據持久存儲

          分布式存儲

          redis支持master-slave復制模式
          memcache可以使用一致性hash做分布式

          value大小不同

          memcache是一個內存緩存,key的長度小于250字符,單個item存儲要小于1M,不適合虛擬機使用

          數據一致性不同

          redis使用的是單線程模型,保證了數據按順序提交。
          memcache需要使用cas保證數據一致性。CAS(Check and Set)是一個確保并發一致性的機制,屬于“樂觀鎖”范疇;原理很簡單:拿版本號,操作,對比版本號,如果一致就操作,不一致就放棄任何操作

          cpu利用

          redis單線程模型只能使用一個cpu,可以開啟多個redis進程

          參考

          http://www.cnblogs.com/qunshu/p/3196972.html
          http://www.blogjava.net/chhbjh/archive/2012/02/21/370472.html
          http://maoyidao.iteye.com/blog/1846089

          分類: redis 標簽: ,

          redis和redis php擴展安裝

          2013年5月29日 1 條評論

          redis是一個內存數據庫,比memcache支持更豐富的value類型,新浪微博就使用redis來做緩存。

          redis的源碼安裝

          1.make時可能會報如下錯誤:

          解決辦法:
          編輯src/.make-settings里的OPT,改為OPT=-O2 -march=i686。

          2.make test報錯:

          解決辦法安裝tcl

          redis命令介紹

          Redis 由四個可執行文件:redis-benchmark、redis-cli、redis-server、redis-stat 這四個文件,加上一個redis.conf就構成了整個redis的最終可用包。它們的作用如下:

          redis-server:Redis服務器的daemon啟動程序
          redis-cli:Redis命令行操作工具。當然,你也可以用telnet根據其純文本協議來操作
          redis-benchmark:Redis性能測試工具,測試Redis在你的系統及你的配置下的讀寫性能
          redis-stat:Redis狀態檢測工具,可以檢測Redis當前狀態參數及延遲狀況
          現在就可以啟動redis了,redis只有一個啟動參數,就是他的配置文件路徑。

          啟動redis

          復制源碼包里的redis.conf到/etc
          # cd redis-stable
          # cp redis.conf /etc/redis.conf

          編輯/etc/redis.conf ,修改
          daemaon no 為daemaon yes ,以守護進程方式啟動進程。

          # redis-server /etc/redis.conf

          關閉redis
          # redis-cli shutdown //關閉所有
          關閉某個端口上的redis
          # redis-cli -p 6397 shutdown //關閉6397端口的redis
          說明:關閉以后緩存數據會自動dump到硬盤上,硬盤地址見redis.conf中的dbfilename dump.rdb

          redis配置

          注意,默認復制過去的redis.conf文件的daemonize參數為no,所以redis不會在后臺運行,這時要測試,我們需要重新開一個終端。修改為yes則為后臺運行redis。另外配置文件中規定了pid文件,log文件和數據文件的地址,如果有需要先修改,默認log信息定向到stdout.

          下面是redis.conf的主要配置參數的意義:

          daemonize:是否以后臺daemon方式運行
          pidfile:pid文件位置
          port:監聽的端口號
          timeout:請求超時時間
          loglevel:log信息級別
          logfile:log文件位置
          databases:開啟數據庫的數量
          save * *:保存快照的頻率,第一個*表示多長時間,第三個*表示執行多少次寫操作。在一定時間內執行一定數量的寫操作時,自動保存快照。可設置多個條件。
          rdbcompression:是否使用壓縮
          dbfilename:數據快照文件名(只是文件名,不包括目錄)
          dir:數據快照的保存目錄(這個是目錄)
          appendonly:是否開啟appendonlylog,開啟的話每次寫操作會記一條log,這會提高數據抗風險能力,但影響效率。
          appendfsync:appendonlylog如何同步到磁盤(三個選項,分別是每次寫都強制調用fsync、每秒啟用一次fsync、不調用fsync等待系統自己同步)
          這時你可以打開一個終端進行測試了,配置文件中默認的監聽端口是6379

          redis開機自動啟動

          用這個腳本管理之前,需要先配置下面的內核參數,否則Redis腳本在重啟或停止redis時,將會報錯,并且不能自動在停止服務前同步數據到磁盤上:

          # vi /etc/sysctl.conf

          vm.overcommit_memory = 1

          然后應用生效:

          # sysctl –p

          建立redis啟動腳本:

          # vim /etc/init.d/redis

          然后增加服務并開機自啟動:

          redis php擴展安裝

          wget https://github.com/nicolasff/phpredis/zipball/master -O php-redis.zip
          unzip php-redis.zip
          cd nicolasff-phpredis-2d0f29b/
          /usr/local/php/bin/phpize
          ./configure --with-php-config=/usr/local/php/bin/php-config
          make && make install

          完成后redis.so被安裝到
          /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/

          vi /usr/local/php/lib/php.ini

          添加
          extension=redis.so

          重啟php-fpm即可。

          configure時可能會遇到,添加--with-php-config參數可以解決。

          configure: error: Cannot find php-config. Please use --with-php-config=PATH

          ./configure --with-php-config=/usr/local/php/bin/php-config

          分類: redis 標簽: , , ,
          印度快乐8官网
          <em id="1rarx"><ins id="1rarx"></ins></em><sup id="1rarx"></sup>

          <progress id="1rarx"><tr id="1rarx"></tr></progress>
          <sup id="1rarx"><menu id="1rarx"></menu></sup>
          <menuitem id="1rarx"></menuitem><optgroup id="1rarx"><small id="1rarx"><sub id="1rarx"></sub></small></optgroup>

            <sup id="1rarx"><menu id="1rarx"></menu></sup>
            <div id="1rarx"></div><div id="1rarx"><tr id="1rarx"><object id="1rarx"></object></tr></div>
              <em id="1rarx"></em>

                  <em id="1rarx"><ins id="1rarx"></ins></em><sup id="1rarx"></sup>

                  <progress id="1rarx"><tr id="1rarx"></tr></progress>
                  <sup id="1rarx"><menu id="1rarx"></menu></sup>
                  <menuitem id="1rarx"></menuitem><optgroup id="1rarx"><small id="1rarx"><sub id="1rarx"></sub></small></optgroup>

                    <sup id="1rarx"><menu id="1rarx"></menu></sup>
                    <div id="1rarx"></div><div id="1rarx"><tr id="1rarx"><object id="1rarx"></object></tr></div>
                      <em id="1rarx"></em>