memcache和redis區別

來源:互聯網
上載者:User

標籤:des   class   blog   java   http   tar   

memcache和redis區別2014年4月27日mood暫無評論

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標籤:memcache, redisredis和redis php擴充安裝2013年5月29日mood1條評論

redis是一個記憶體資料庫,比memcache支援更豐富的value類型,新浪微博就使用redis來做緩衝。

redis的源碼安裝

wget http://download.redis.io/redis-stable.tar.gztar -zxvf redis-stable.tar.gzcd redis-stablemakemake testmake install

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

zmalloc.o: In function `zmalloc_used_memory‘:/root/redis-stable/src/zmalloc.c:223: undefined reference to `__sync_add_and_fetch_4‘collect2: ld returned 1 exit statusmake[1]: *** [redis-server] Error 1make[1]: Leaving directory `/root/redis-stable/src‘make: *** [all] Error 2

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

2.make test報錯:

You need tcl 8.5 or newer in order to run the Redis testmake: *** [test] Error 1

解決辦法安裝tcl

wget http://downloads.sourceforge.net/tcl/tcl8.6.0-src.tar.gzcd tcl8.6.0/cd unix &&./configure --prefix=/usr             --mandir=/usr/share/man             --without-tzdata             $([ $(uname -m) = x86_64 ] && echo --enable-64bit) &&make &&sed -e "[email protected]^\(TCL_SRC_DIR=‘\).*@\1/usr/include‘@"     -e "/TCL_B/[email protected]=‘\(-L\)\?.*[email protected]=‘\1/usr/[email protected]"     -i tclConfig.shmake install &&make install-private-headers &&ln -v -sf tclsh8.6 /usr/bin/tclsh &&chmod -v 755 /usr/lib/libtcl8.6.so

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

#!/bin/bash # # Init file for redis # # chkconfig: - 80 12 # description: redis daemon # # processname: redis # config: /etc/redis.conf # pidfile: /var/run/redis.pid source /etc/init.d/functions #BIN="/usr/local/bin" BIN="/usr/local/bin" CONFIG="/etc/redis.conf" PIDFILE="/var/run/redis.pid" ### Read configuration [ -r "$SYSCONFIG" ] && source "$SYSCONFIG" RETVAL=0 prog="redis-server" desc="Redis Server" start() {         if [ -e $PIDFILE ];then              echo "$desc already running...."              exit 1         fi         echo -n $"Starting $desc: "         daemon $BIN/$prog $CONFIG         RETVAL=$?         echo         [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog         return $RETVAL } stop() {         echo -n $"Stop $desc: "         killproc $prog         RETVAL=$?         echo         [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog $PIDFILE         return $RETVAL } restart() {         stop         start } case "$1" in   start)         start         ;;   stop)         stop         ;;   restart)         restart         ;;   condrestart)         [ -e /var/lock/subsys/$prog ] && restart         RETVAL=$?         ;;   status)         status $prog         RETVAL=$?         ;;    *)         echo $"Usage: $0 {start|stop|restart|condrestart|status}"         RETVAL=1 esac exit $RETVAL

然後增加服務並開機自啟動:

# chmod 755 /etc/init.d/redis # chkconfig --add redis # chkconfig --level 345 redis on # chkconfig --list 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標籤:redis, 啟動, 安裝, 擴充
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.