啟動(dòng)安裝:http://elain.blog.51cto.com/3339379/705846
redis下載:ps://github.com/nicolasff/phpredis/downloads ">https://github.com/nicolasff/phpredis/downloads
多臺(tái)服務(wù)安裝:http://www.vquickphp.com/?a=blogview&id=30
開(kāi)機(jī)加自啟動(dòng):echo "redis-server /etc/redis.conf" >>/etc/rc.local
以前有想過(guò)用 Memcache 實(shí)現(xiàn)M/S架構(gòu)的負(fù)載均衡方案,直到聽(tīng)說(shuō)了 Redis 后才發(fā)現(xiàn)它做得更好。
發(fā)了幾天時(shí)間研究了一下 Redis,感覺(jué)真的很不錯(cuò),特整理一下!
以下操作都是在 SUSE Linux 11 下安裝了好了PHP為例子,如果安裝過(guò)程中有提示缺少的包可以使用
zypper search rpm-name 進(jìn)行查詢,然后用 zypper install rpm-name 安裝
一:memcache 和 Redis 對(duì)比總結(jié)
[memecache 特點(diǎn)]
1:速度最快(沒(méi)有自測(cè),但網(wǎng)上有詳細(xì)的測(cè)試用例)
2:支持水平擴(kuò)展,可以任意添加節(jié)點(diǎn)
[redis 特點(diǎn)]
1:速度沒(méi)有memcache快
2:支持M/S的主從備份
3:可以支持多數(shù)據(jù)庫(kù)
4:操作指令很豐富
4:支持異步數(shù)據(jù)持久化(以文件保存)
總結(jié):
1:如果是簡(jiǎn)單的數(shù)據(jù)緩存建議使用MEMCACHE。
2:如果要對(duì)單一操作的數(shù)據(jù)量非常的大則使用MEMCACHE
3: 如果想做性能很好的緩存集群可以用Redis(M/S讀寫(xiě)分離,如weibo中的排行榜等)
4: 如果在高并發(fā)下又想保存數(shù)據(jù)則可以用Redis (如更新熱門文章瀏覽次數(shù),memcachedb也不錯(cuò))
二:Redis 的詳細(xì)安裝
將 redis 安裝到 /usr/local/webserver/redis
1:從 http://redis.io/download 上下載安裝包
- wget http://redis.googlecode.com/files/redis-2.2.15.tar.gz
- tar zxvf redis-2.2.15.tar.gz
- cd redis-2.2.15
- make
- mkdir -p /usr/local/webserver/redis/conf
- mkdir -p /usr/local/webserver/redis/run
- mkdir -p /usr/local/webserver/redis/db
- cp redis.conf /usr/local/webserver/redis/conf/
- cd src
- # 將 src 目錄下所有可執(zhí)行文件復(fù)制到安裝目錄
- cp redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server mkreleasehdr.sh /usr/local/webserver/redis/
2:修改配置文件中的如下選項(xiàng):
- ------- vi /usr/local/webserver/redis/conf/redis.conf --------
- daemonize yes
- pidfile /usr/local/webserver/redis/run/redis.pid
- dir /usr/local/webserver/redis/db
3:創(chuàng)建服務(wù)腳本
- ------- vi /usr/local/webserver/redis/start.sh ---------
- #!/bin/bash
- /usr/local/webserver/redis/redis-server /usr/local/webserver/redis/conf/redis.conf
- --------------------------------------------------------
- ------- vi /usr/local/webserver/redis/stop.sh ---------
- #!/bin/bash
- kill `cat /usr/local/webserver/redis/run/redis.pid`
- --------------------------------------------------------
- chmod a+x /usr/local/webserver/redis/start.sh /usr/local/webserver/redis/stop.sh
4:啟動(dòng) redis 服務(wù)
/usr/local/webserver/redis/start.sh
驗(yàn)證證服務(wù)是否成功:
netstat -nlpt | grep 6379
5:?jiǎn)?dòng)客戶端驗(yàn)證
- /usr/local/webserver/redis/redis-cli
- >set key1 val1
- >get key1
三:Redis Master/Slave 主從集群配置
這里我們以本機(jī)配置 1臺(tái)Master + 2臺(tái)Slave 為例子,其中:
Master IP:127.0.0.1 PORT:6379
Slave1 IP:127.0.0.1 PORT:63791
Slave2 IP:127.0.0.1 PORT:63792
1:復(fù)制兩個(gè) Slave 目錄,方便管理
cp -r /usr/local/webserver/redis /usr/local/webserver/redis-slave1
cp -r /usr/local/webserver/redis /usr/local/webserver/redis-slave2
2:修改 redis-slave1 的配置文件和服務(wù)腳本
- -- vi /usr/local/webserver/redis-slave1/conf/redis.conf --
- port 63791
- pidfile /usr/local/webserver/redis-slave1/run/redis.pid
- dir /usr/local/webserver/redis-slave1/db
- slaveof 127.0.0.1 6379
- ----------------------------------------------------------
- -- vi /usr/local/webserver/redis-slave1/start.sh --
- #!/bin/bash
- /usr/local/webserver/redis-slave1/redis-server /usr/local/webserver/redis-slave1/conf/redis.conf
- ---------------------------------------------------
- ------- vi /usr/local/webserver/redis-slave1/stop.sh ---------
- #!/bin/bash
- kill `cat /usr/local/webserver/redis-slave1/run/redis.pid`
3:修改 redis-slave2 的配置文件和服務(wù)腳本
- -- vi /usr/local/webserver/redis-slave2/conf/redis.conf --
- port 63792
- pidfile /usr/local/webserver/redis-slave2/run/redis.pid
- dir /usr/local/webserver/redis-slave2/db
- slaveof 127.0.0.1 6379
- ----------------------------------------------------------
- -- vi /usr/local/webserver/redis-slave2/start.sh --
- #!/bin/bash
- /usr/local/webserver/redis-slave2/redis-server /usr/local/webserver/redis-slave2/conf/redis.conf
- ---------------------------------------------------
- ------- vi /usr/local/webserver/redis-slave2/stop.sh ---------
- #!/bin/bash
- kill `cat /usr/local/webserver/redis-slave2/run/redis.pid`
4:啟動(dòng) M/S 服務(wù)
/usr/local/webserver/redis/start.sh
/usr/local/webserver/redis-slave1/start.sh
/usr/local/webserver/redis-slave2/start.sh
驗(yàn)證服務(wù)是否正常:netstat -nlpt | grep redis-server 有3個(gè)端口存在證明成功了
0 0.0.0.0:6379
0 0.0.0.0:63791
0 0.0.0.0:63792
5:驗(yàn)證M/S服務(wù)是否生效
- /usr/local/webserver/redis/redis-cli [默認(rèn)連接端口:6379 的 Master服務(wù)]
- >set key1 val1
- >quit
- /usr/local/webserver/redis/redis-cli -p 63791 [連接 Slave1 服務(wù)]
- >get key1
- "val1" (數(shù)據(jù)成功同步了)
- /usr/local/webserver/redis/redis-cli -p 63792 [連接 Slave2 服務(wù)]
- >get key1
- "val1" (數(shù)據(jù)成功同步了)
四:安裝 Redis PHP 擴(kuò)展
Redis所有的客戶端在 http://redis.io/clients [PHP選項(xiàng)卡] 基于性能選擇安裝 phpredis
在 https://github.com/nicolasff/phpredis/downloads 上下載源代碼包到本地然后上傳到服務(wù)器.
- tar zxvf nicolasff-phpredis-2.1.3-167-ga5e53f1.tar.gz
- cd nicolasff-phpredis-a5e53f1
- phpize
如果出現(xiàn):
- Configuring for:
- PHP Api Version: 20041225
- Zend Module Api No: 20060613
- Zend Extension Api No: 220060519
- Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable is set correctly and then rerun this script.
用下面的方法解決:
- # wget http://ftp.gnu.org/gnu/m4/m4-1.4.9.tar.gz
- # tar -zvxf m4-1.4.9.tar.gz
- # cd m4-1.4.9/
- # ./configure && make && make install
- # cd ../
- # wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.62.tar.gz
- # tar -zvxf autoconf-2.62.tar.gz
- # cd autoconf-2.62/
- # ./configure && make && make install
- ./configure --with-php-config=/usr/local/php/bin/php-config
- make && make install
查看輸出信息會(huì)告訴你 redis.so 的那個(gè)目錄下,把它復(fù)制到PHP的擴(kuò)展目錄下.
我的系統(tǒng)上是 /usr/lib/php5/extensions/
用 php --ini 找到 php.ini 的位置,加入以下行后重啟WEB服務(wù)器
extension=redis.so
五:PHP負(fù)載開(kāi)發(fā)方案,代碼如下:
- <?php
- /**
- * Redis 操作,支持 Master/Slave 的負(fù)載集群
- *
- * @author V哥
- */
- class RedisCluster{
- // 是否使用 M/S 的讀寫(xiě)集群方案
- private $_isUseCluster = false;
- // Slave 句柄標(biāo)記
- private $_sn = 0;
- // 服務(wù)器連接句柄
- private $_linkHandle = array(
- 'master'=>null,// 只支持一臺(tái) Master
- 'slave'=>array(),// 可以有多臺(tái) Slave
- );
- /**
- * 構(gòu)造函數(shù)
- *
- * @param boolean $isUseCluster 是否采用 M/S 方案
- */
- public function __construct($isUseCluster=false){
- $this->_isUseCluster = $isUseCluster;
- }
- /**
- * 連接服務(wù)器,注意:這里使用長(zhǎng)連接,提高效率,但不會(huì)自動(dòng)關(guān)閉
- *
- * @param array $config Redis服務(wù)器配置
- * @param boolean $isMaster 當(dāng)前添加的服務(wù)器是否為 Master 服務(wù)器
- * @return boolean
- */
- public function connect($config=array('host'=>'127.0.0.1','port'=>6379), $isMaster=true){
- // default port
- if(!isset($config['port'])){
- $config['port'] = 6379;
- }
- // 設(shè)置 Master 連接
- if($isMaster){
- $this->_linkHandle['master'] = new Redis();
- $ret = $this->_linkHandle['master']->pconnect($config['host'],$config['port']);
- }else{
- // 多個(gè) Slave 連接
- $this->_linkHandle['slave'][$this->_sn] = new Redis();
- $ret = $this->_linkHandle['slave'][$this->_sn]->pconnect($config['host'],$config['port']);
- ++$this->_sn;
- }
- return $ret;
- }
- /**
- * 關(guān)閉連接
- *
- * @param int $flag 關(guān)閉選擇 0:關(guān)閉 Master 1:關(guān)閉 Slave 2:關(guān)閉所有
- * @return boolean
- */
- public function close($flag=2){
- switch($flag){
- // 關(guān)閉 Master
- case 0:
- $this->getRedis()->close();
- break;
- // 關(guān)閉 Slave
- case 1:
- for($i=0; $i<$this->_sn; ++$i){
- $this->_linkHandle['slave'][$i]->close();
- }
- break;
- // 關(guān)閉所有
- case 1:
- $this->getRedis()->close();
- for($i=0; $i<$this->_sn; ++$i){
- $this->_linkHandle['slave'][$i]->close();
- }
- break;
- }
- return true;
- }
- /**
- * 得到 Redis 原始對(duì)象可以有更多的操作
- *
- * @param boolean $isMaster 返回服務(wù)器的類型 true:返回Master false:返回Slave
- * @param boolean $slaveOne 返回的Slave選擇 true:負(fù)載均衡隨機(jī)返回一個(gè)Slave選擇 false:返回所有的Slave選擇
- * @return redis object
- */
- public function getRedis($isMaster=true,$slaveOne=true){
- // 只返回 Master
- if($isMaster){
- return $this->_linkHandle['master'];
- }else{
- return $slaveOne ? $this->_getSlaveRedis() : $this->_linkHandle['slave'];
- }
- }
- /**
- * 寫(xiě)緩存
- *
- * @param string $key 組存KEY
- * @param string $value 緩存值
- * @param int $expire 過(guò)期時(shí)間, 0:表示無(wú)過(guò)期時(shí)間
- */
- public function set($key, $value, $expire=0){
- // 永不超時(shí)
- if($expire == 0){
- $ret = $this->getRedis()->set($key, $value);
- }else{
- $ret = $this->getRedis()->setex($key, $expire, $value);
- }
- return $ret;
- }
- /**
- * 讀緩存
- *
- * @param string $key 緩存KEY,支持一次取多個(gè) $key = array('key1','key2')
- * @return string || boolean 失敗返回 false, 成功返回字符串
- */
- public function get($key){
- // 是否一次取多個(gè)值
- $func = is_array($key) ? 'mGet' : 'get';
- // 沒(méi)有使用M/S
- if(! $this->_isUseCluster){
- return $this->getRedis()->{$func}($key);
- }
- // 使用了 M/S
- return $this->_getSlaveRedis()->{$func}($key);
- }
- /**
- * 條件形式設(shè)置緩存,如果 key 不存時(shí)就設(shè)置,存在時(shí)設(shè)置失敗
- *
- * @param string $key 緩存KEY
- * @param string $value 緩存值
- * @return boolean
- */
- public function setnx($key, $value){
- return $this->getRedis()->setnx($key, $value);
- }
- /**
- * 刪除緩存
- *
- * @param string || array $key 緩存KEY,支持單個(gè)健:"key1" 或多個(gè)健:array('key1','key2')
- * @return int 刪除的健的數(shù)量
- */
- public function remove($key){
- // $key => "key1" || array('key1','key2')
- return $this->getRedis()->delete($key);
- }
- /**
- * 值加加操作,類似 ++$i ,如果 key 不存在時(shí)自動(dòng)設(shè)置為 0 后進(jìn)行加加操作
- *
- * @param string $key 緩存KEY
- * @param int $default 操作時(shí)的默認(rèn)值
- * @return int 操作后的值
- */
- public function incr($key,$default=1){
- if($default == 1){
- return $this->getRedis()->incr($key);
- }else{
- return $this->getRedis()->incrBy($key, $default);
- }
- }
- /**
- * 值減減操作,類似 --$i ,如果 key 不存在時(shí)自動(dòng)設(shè)置為 0 后進(jìn)行減減操作
- *
- * @param string $key 緩存KEY
- * @param int $default 操作時(shí)的默認(rèn)值
- * @return int 操作后的值
- */
- public function decr($key,$default=1){
- if($default == 1){
- return $this->getRedis()->decr($key);
- }else{
- return $this->getRedis()->decrBy($key, $default);
- }
- }
- /**
- * 添空當(dāng)前數(shù)據(jù)庫(kù)
- *
- * @return boolean
- */
- public function clear(){
- return $this->getRedis()->flushDB();
- }
- /* =================== 以下私有方法 =================== */
- /**
- * 隨機(jī) HASH 得到 Redis Slave 服務(wù)器句柄
- *
- * @return redis object
- */
- private function _getSlaveRedis(){
- // 就一臺(tái) Slave 機(jī)直接返回
- if($this->_sn <= 1){
- return $this->_linkHandle['slave'][0];
- }
- // 隨機(jī) Hash 得到 Slave 的句柄
- $hash = $this->_hashId(mt_rand(), $this->_sn);
- return $this->_linkHandle['slave'][$hash];
- }
- /**
- * 根據(jù)ID得到 hash 后 0~m-1 之間的值
- *
- * @param string $id
- * @param int $m
- * @return int
- */
- private function _hashId($id,$m=10)
- {
- //把字符串K轉(zhuǎn)換為 0~m-1 之間的一個(gè)值作為對(duì)應(yīng)記錄的散列地址
- $k = md5($id);
- $l = strlen($k);
- $b = bin2hex($k);
- $h = 0;
- for($i=0;$i<$l;$i++)
- {
- //相加模式HASH
- $h += <a href="/tags.php/substr/" target="_blank">substr</a>($b,$i*2,2);
- }
- $hash = ($h*1)%$m;
- return $hash;
- }
- }// End Class
- // ================= TEST DEMO =================
- // 只有一臺(tái) Redis 的應(yīng)用
- $redis = new RedisCluster();
- $redis->connect(array('host'=>'127.0.0.1','port'=>6379));
- $redis->set('id',35);
- var_dump($redis->get('id'));
- // 有一臺(tái) Master 和 多臺(tái)Slave 的集群應(yīng)用
- $redis = new RedisCluster(true);
- $redis->connect(array('host'=>'127.0.0.1','port'=>6379), true);// master
- $redis->connect(array('host'=>'127.0.0.1','port'=>63791), false);// slave 1
- $redis->connect(array('host'=>'127.0.0.1','port'=>63792), false);// slave 2
- $redis->set('id',100);
- for($i=1; $i<=100; ++$i){
- var_dump($redis->get('id')).PHP_EOL;
- } //Vevb.com
- // phpRedis 擴(kuò)展的更多高級(jí)操作
- $redis = new RedisCluster();
- $redis->connect(array('host'=>'127.0.0.1','port'=>6379));
- $ret = $redis->getRedis()->ping();// phpRedis 原始API
- var_dump($ret);
[phpReadis API手冊(cè)]
https://github.com/nicolasff/phpredis
[redis 配置說(shuō)明--來(lái)自網(wǎng)絡(luò)]
1.Redis默認(rèn)不是以守護(hù)進(jìn)程的方式運(yùn)行,可以通過(guò)該配置項(xiàng)修改,使用yes啟用守護(hù)進(jìn)程 daemonize no
2.當(dāng)Redis以守護(hù)進(jìn)程方式運(yùn)行時(shí),Redis默認(rèn)會(huì)把pid寫(xiě)入/var/run/redis.pid文件,可以通過(guò)pidfile指定 pidfile /var/run/redis.pid
3.指定Redis監(jiān)聽(tīng)端口,默認(rèn)端口為6379,作者在自己的一篇博文中解釋了為什么選用6379作為默認(rèn)端口,因?yàn)?379在手機(jī)按鍵上MERZ對(duì)應(yīng)的號(hào)碼,而MERZ取自意大利歌女Alessia Merz的名字 port 6379
4.綁定的主機(jī)地址 bind 127.0.0.1
5.當(dāng) 客戶端閑置多長(zhǎng)時(shí)間后關(guān)閉連接,如果指定為0,表示關(guān)閉該功能
timeout 300
6. 指定日志記錄級(jí)別,Redis總共支持四個(gè)級(jí)別:debug、verbose、notice、warning,默認(rèn)為verbose
loglevel verbose
7. 日志記錄方式,默認(rèn)為標(biāo)準(zhǔn)輸出,如果配置Redis為守護(hù)進(jìn)程方式運(yùn)行,而這里又配置為日志記錄方式為標(biāo)準(zhǔn)輸出,則日志將會(huì)發(fā)送給/dev/null
logfile stdout
8. 設(shè)置數(shù)據(jù)庫(kù)的數(shù)量,默認(rèn)數(shù)據(jù)庫(kù)為0,可以使用SELECT <dbid>命令在連接上指定數(shù)據(jù)庫(kù)id
databases 16
9. 指定在多長(zhǎng)時(shí)間內(nèi),有多少次更新操作,就將數(shù)據(jù)同步到數(shù)據(jù)文件,可以多個(gè)條件配合
save <seconds> <changes>
Redis默認(rèn)配置文件中提供了三個(gè)條件:
save 900 1
save 300 10
save 60 10000
分別表示900秒(15分鐘)內(nèi)有1個(gè)更改,300秒(5分鐘)內(nèi)有10個(gè)更改以及60秒內(nèi)有10000個(gè)更改。
10. 指定存儲(chǔ)至本地?cái)?shù)據(jù)庫(kù)時(shí)是否壓縮數(shù)據(jù),默認(rèn)為yes,Redis采用LZF壓縮,如果為了節(jié)省CPU時(shí)間,可以關(guān)閉該選項(xiàng),但會(huì)導(dǎo)致數(shù)據(jù)庫(kù)文件變的巨大
rdbcompression yes
11. 指定本地?cái)?shù)據(jù)庫(kù)文件名,默認(rèn)值為dump.rdb
dbfilename dump.rdb
12. 指定本地?cái)?shù)據(jù)庫(kù)存放目錄
dir ./
13. 設(shè)置當(dāng)本機(jī)為slav服務(wù)時(shí),設(shè)置master服務(wù)的IP地址及端口,在Redis啟動(dòng)時(shí),它會(huì)自動(dòng)從master進(jìn)行數(shù)據(jù)同步
slaveof <masterip> <masterport>
14. 當(dāng)master服務(wù)設(shè)置了密碼保護(hù)時(shí),slav服務(wù)連接master的密碼
masterauth <master-password>
15. 設(shè)置Redis連接密碼,如果配置了連接密碼,客戶端在連接Redis時(shí)需要通過(guò)AUTH <password>命令提供密碼,默認(rèn)關(guān)閉
requirepass foobared
16. 設(shè)置同一時(shí)間最大客戶端連接數(shù),默認(rèn)無(wú)限制,Redis可以同時(shí)打開(kāi)的客戶端連接數(shù)為Redis進(jìn)程可以打開(kāi)的最大文件描述符數(shù),如果設(shè)置 maxclients 0,表示不作限制。當(dāng)客戶端連接數(shù)到達(dá)限制時(shí),Redis會(huì)關(guān)閉新的連接并向客戶端返回max number of clients reached錯(cuò)誤信息
maxclients 128
17. 指定Redis最大內(nèi)存限制,Redis在啟動(dòng)時(shí)會(huì)把數(shù)據(jù)加載到內(nèi)存中,達(dá)到最大內(nèi)存后,Redis會(huì)先嘗試清除已到期或即將到期的Key,當(dāng)此方法處理 后,仍然到達(dá)最大內(nèi)存設(shè)置,將無(wú)法再進(jìn)行寫(xiě)入操作,但仍然可以進(jìn)行讀取操作。Redis新的vm機(jī)制,會(huì)把Key存放內(nèi)存,Value會(huì)存放在swap區(qū)
maxmemory <bytes>
18. 指定是否在每次更新操作后進(jìn)行日志記錄,Redis在默認(rèn)情況下是異步的把數(shù)據(jù)寫(xiě)入磁盤,如果不開(kāi)啟,可能會(huì)在斷電時(shí)導(dǎo)致一段時(shí)間內(nèi)的數(shù)據(jù)丟失。因?yàn)?redis本身同步數(shù)據(jù)文件是按上面save條件來(lái)同步的,所以有的數(shù)據(jù)會(huì)在一段時(shí)間內(nèi)只存在于內(nèi)存中。默認(rèn)為no
appendonly no
19. 指定更新日志文件名,默認(rèn)為appendonly.aof
appendfilename appendonly.aof
20. 指定更新日志條件,共有3個(gè)可選值:
no:表示等操作系統(tǒng)進(jìn)行數(shù)據(jù)緩存同步到磁盤(快)
always:表示每次更新操作后手動(dòng)調(diào)用fsync()將數(shù)據(jù)寫(xiě)到磁盤(慢,安全)
everysec:表示每秒同步一次(折衷,默認(rèn)值)
appendfsync everysec
21. 指定是否啟用虛擬內(nèi)存機(jī)制,默認(rèn)值為no,簡(jiǎn)單的介紹一下,VM機(jī)制將數(shù)據(jù)分頁(yè)存放,由Redis將訪問(wèn)量較少的頁(yè)即冷數(shù)據(jù)swap到磁盤上,訪問(wèn)多的頁(yè)面由磁盤自動(dòng)換出到內(nèi)存中(在后面的文章我會(huì)仔細(xì)分析Redis的VM機(jī)制)
vm-enabled no
22. 虛擬內(nèi)存文件路徑,默認(rèn)值為/tmp/redis.swap,不可多個(gè)Redis實(shí)例共享
vm-swap-file /tmp/redis.swap
23. 將所有大于vm-max-memory的數(shù)據(jù)存入虛擬內(nèi)存,無(wú)論vm-max-memory設(shè)置多小,所有索引數(shù)據(jù)都是內(nèi)存存儲(chǔ)的(Redis的索引數(shù)據(jù) 就是keys),也就是說(shuō),當(dāng)vm-max-memory設(shè)置為0的時(shí)候,其實(shí)是所有value都存在于磁盤。默認(rèn)值為0
vm-max-memory 0
24. Redis swap文件分成了很多的page,一個(gè)對(duì)象可以保存在多個(gè)page上面,但一個(gè)page上不能被多個(gè)對(duì)象共享,vm-page-size是要根據(jù)存儲(chǔ)的 數(shù)據(jù)大小來(lái)設(shè)定的,作者建議如果存儲(chǔ)很多小對(duì)象,page大小最好設(shè)置為32或者64bytes;如果存儲(chǔ)很大大對(duì)象,則可以使用更大的page,如果不 確定,就使用默認(rèn)值
vm-page-size 32
25. 設(shè)置swap文件中的page數(shù)量,由于頁(yè)表(一種表示頁(yè)面空閑或使用的bitmap)是在放在內(nèi)存中的,,在磁盤上每8個(gè)pages將消耗1byte的內(nèi)存。
vm-pages 134217728
vm-max-threads 4
27. 設(shè)置在向客戶端應(yīng)答時(shí),是否把較小的包合并為一個(gè)包發(fā)送,默認(rèn)為開(kāi)啟
glueoutputbuf yes
28. 指定在超過(guò)一定的數(shù)量或者最大的元素超過(guò)某一臨界值時(shí),采用一種特殊的哈希算法
hash-max-zipmap-entries 64
hash-max-zipmap-value 512
29. 指定是否激活重置哈希,默認(rèn)為開(kāi)啟(后面在介紹Redis的哈希算法時(shí)具體介紹)
activerehashing yes
30. 指定包含其它的配置文件,可以在同一主機(jī)上多個(gè)Redis實(shí)例之間使用同一份配置文件,而同時(shí)各個(gè)實(shí)例又擁有自己的特定配置文件
include /path/to/local.conf
新聞熱點(diǎn)
疑難解答