国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > PHP > 正文

php怎么安裝redis擴(kuò)展?redis安裝以及php擴(kuò)展的介紹

2024-05-04 21:50:04
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

啟動(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 上下載安裝包

  1. wget http://redis.googlecode.com/files/redis-2.2.15.tar.gz 
  2. tar zxvf redis-2.2.15.tar.gz 
  3. cd redis-2.2.15 
  4. make 
  5.  
  6. mkdir -p /usr/local/webserver/redis/conf 
  7. mkdir -p /usr/local/webserver/redis/run 
  8. mkdir -p /usr/local/webserver/redis/db 
  9. cp redis.conf /usr/local/webserver/redis/conf/ 
  10. cd src 
  11. # 將 src 目錄下所有可執(zhí)行文件復(fù)制到安裝目錄 
  12. cp redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server mkreleasehdr.sh /usr/local/webserver/redis/ 

2:修改配置文件中的如下選項(xiàng):

  1. ------- vi /usr/local/webserver/redis/conf/redis.conf -------- 
  2. daemonize yes 
  3. pidfile /usr/local/webserver/redis/run/redis.pid 
  4. dir /usr/local/webserver/redis/db 

3:創(chuàng)建服務(wù)腳本

  1. ------- vi /usr/local/webserver/redis/start.sh --------- 
  2. #!/bin/bash 
  3. /usr/local/webserver/redis/redis-server /usr/local/webserver/redis/conf/redis.conf 
  4. -------------------------------------------------------- 
  5.  
  6. ------- vi /usr/local/webserver/redis/stop.sh --------- 
  7. #!/bin/bash 
  8. kill `cat /usr/local/webserver/redis/run/redis.pid` 
  9. -------------------------------------------------------- 
  10.  
  11. 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)證

  1. /usr/local/webserver/redis/redis-cli 
  2. >set key1 val1 
  3. >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ù)腳本

  1. -- vi /usr/local/webserver/redis-slave1/conf/redis.conf -- 
  2. port 63791 
  3. pidfile /usr/local/webserver/redis-slave1/run/redis.pid 
  4. dir /usr/local/webserver/redis-slave1/db 
  5. slaveof 127.0.0.1 6379 
  6. ---------------------------------------------------------- 
  7.  
  8. -- vi /usr/local/webserver/redis-slave1/start.sh -- 
  9. #!/bin/bash 
  10. /usr/local/webserver/redis-slave1/redis-server /usr/local/webserver/redis-slave1/conf/redis.conf 
  11. --------------------------------------------------- 
  12.  
  13. ------- vi /usr/local/webserver/redis-slave1/stop.sh --------- 
  14. #!/bin/bash 
  15. kill `cat /usr/local/webserver/redis-slave1/run/redis.pid` 

3:修改 redis-slave2 的配置文件和服務(wù)腳本

  1. -- vi /usr/local/webserver/redis-slave2/conf/redis.conf -- 
  2. port 63792 
  3. pidfile /usr/local/webserver/redis-slave2/run/redis.pid 
  4. dir /usr/local/webserver/redis-slave2/db 
  5. slaveof 127.0.0.1 6379 
  6. ---------------------------------------------------------- 
  7.  
  8. -- vi /usr/local/webserver/redis-slave2/start.sh -- 
  9. #!/bin/bash 
  10. /usr/local/webserver/redis-slave2/redis-server /usr/local/webserver/redis-slave2/conf/redis.conf 
  11. --------------------------------------------------- 
  12.  
  13. ------- vi /usr/local/webserver/redis-slave2/stop.sh --------- 
  14. #!/bin/bash 
  15. 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ù)是否生效

  1. /usr/local/webserver/redis/redis-cli [默認(rèn)連接端口:6379 的 Master服務(wù)] 
  2. >set key1 val1 
  3. >quit 
  4.  
  5. /usr/local/webserver/redis/redis-cli -p 63791 [連接 Slave1 服務(wù)] 
  6. >get key1 
  7. "val1" (數(shù)據(jù)成功同步了) 
  8.  
  9. /usr/local/webserver/redis/redis-cli -p 63792 [連接 Slave2 服務(wù)] 
  10. >get key1 
  11. "val1" (數(shù)據(jù)成功同步了) 

四:安裝 Redis PHP 擴(kuò)展

Redis所有的客戶端在 http://redis.io/clients [PHP選項(xiàng)卡] 基于性能選擇安裝 phpredis

在 https://github.com/nicolasff/phpredis/downloads 上下載源代碼包到本地然后上傳到服務(wù)器.

  1. tar zxvf nicolasff-phpredis-2.1.3-167-ga5e53f1.tar.gz  
  2. cd nicolasff-phpredis-a5e53f1 
  3. phpize 

如果出現(xiàn):

  1. Configuring for
  2. PHP Api Version:         20041225 
  3. Zend Module Api No:      20060613 
  4. Zend Extension Api No:   220060519 
  5. Cannot find autoconf. Please check your autoconf installation and the  $PHP_AUTOCONF  environment variable is set correctly and then rerun this script. 

用下面的方法解決:

  1. # wget http://ftp.gnu.org/gnu/m4/m4-1.4.9.tar.gz 
  2. # tar -zvxf m4-1.4.9.tar.gz 
  3. # cd m4-1.4.9/ 
  4. # ./configure && make && make install 
  5. # cd ../ 
  6. # wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.62.tar.gz 
  7. # tar -zvxf autoconf-2.62.tar.gz 
  8. # cd autoconf-2.62/ 
  9. # ./configure && make && make install 
  10.  
  11. ./configure --with-php-config=/usr/local/php/bin/php-config  
  12. 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ā)方案,代碼如下:

  1. <?php 
  2. /** 
  3.  * Redis 操作,支持 Master/Slave 的負(fù)載集群 
  4.  * 
  5.  * @author V哥 
  6.  */ 
  7. class RedisCluster{ 
  8.   
  9.     // 是否使用 M/S 的讀寫(xiě)集群方案 
  10.     private $_isUseCluster = false; 
  11.   
  12.     // Slave 句柄標(biāo)記 
  13.     private $_sn = 0; 
  14.   
  15.     // 服務(wù)器連接句柄 
  16.     private $_linkHandle = array
  17.         'master'=>null,// 只支持一臺(tái) Master 
  18.         'slave'=>array(),// 可以有多臺(tái) Slave 
  19.     ); 
  20.   
  21.     /** 
  22.      * 構(gòu)造函數(shù) 
  23.      * 
  24.      * @param boolean $isUseCluster 是否采用 M/S 方案 
  25.      */ 
  26.     public function __construct($isUseCluster=false){ 
  27.         $this->_isUseCluster = $isUseCluster
  28.     } 
  29.   
  30.     /** 
  31.      * 連接服務(wù)器,注意:這里使用長(zhǎng)連接,提高效率,但不會(huì)自動(dòng)關(guān)閉 
  32.      * 
  33.      * @param array $config Redis服務(wù)器配置 
  34.      * @param boolean $isMaster 當(dāng)前添加的服務(wù)器是否為 Master 服務(wù)器 
  35.      * @return boolean 
  36.      */ 
  37.     public function connect($config=array('host'=>'127.0.0.1','port'=>6379), $isMaster=true){ 
  38.         // default port 
  39.         if(!isset($config['port'])){ 
  40.             $config['port'] = 6379; 
  41.         } 
  42.         // 設(shè)置 Master 連接 
  43.         if($isMaster){ 
  44.             $this->_linkHandle['master'] = new Redis(); 
  45.             $ret = $this->_linkHandle['master']->pconnect($config['host'],$config['port']); 
  46.         }else
  47.             // 多個(gè) Slave 連接 
  48.             $this->_linkHandle['slave'][$this->_sn] = new Redis(); 
  49.             $ret = $this->_linkHandle['slave'][$this->_sn]->pconnect($config['host'],$config['port']); 
  50.             ++$this->_sn; 
  51.         } 
  52.         return $ret
  53.     } 
  54.   
  55.     /** 
  56.      * 關(guān)閉連接 
  57.      * 
  58.      * @param int $flag 關(guān)閉選擇 0:關(guān)閉 Master 1:關(guān)閉 Slave 2:關(guān)閉所有 
  59.      * @return boolean 
  60.      */ 
  61.     public function close($flag=2){ 
  62.         switch($flag){ 
  63.             // 關(guān)閉 Master 
  64.             case 0: 
  65.                 $this->getRedis()->close(); 
  66.             break
  67.             // 關(guān)閉 Slave 
  68.             case 1: 
  69.                 for($i=0; $i<$this->_sn; ++$i){ 
  70.                     $this->_linkHandle['slave'][$i]->close(); 
  71.                 } 
  72.             break
  73.             // 關(guān)閉所有 
  74.             case 1: 
  75.                 $this->getRedis()->close(); 
  76.                 for($i=0; $i<$this->_sn; ++$i){ 
  77.                     $this->_linkHandle['slave'][$i]->close(); 
  78.                 } 
  79.             break
  80.         } 
  81.         return true; 
  82.     } 
  83.   
  84.     /** 
  85.      * 得到 Redis 原始對(duì)象可以有更多的操作 
  86.      * 
  87.      * @param boolean $isMaster 返回服務(wù)器的類型 true:返回Master false:返回Slave 
  88.      * @param boolean $slaveOne 返回的Slave選擇 true:負(fù)載均衡隨機(jī)返回一個(gè)Slave選擇 false:返回所有的Slave選擇 
  89.      * @return redis object 
  90.      */ 
  91.     public function getRedis($isMaster=true,$slaveOne=true){ 
  92.         // 只返回 Master 
  93.         if($isMaster){ 
  94.             return $this->_linkHandle['master']; 
  95.         }else
  96.             return $slaveOne ? $this->_getSlaveRedis() : $this->_linkHandle['slave']; 
  97.         } 
  98.     } 
  99.   
  100.     /** 
  101.      * 寫(xiě)緩存 
  102.      * 
  103.      * @param string $key 組存KEY 
  104.      * @param string $value 緩存值 
  105.      * @param int $expire 過(guò)期時(shí)間, 0:表示無(wú)過(guò)期時(shí)間 
  106.      */ 
  107.     public function set($key$value$expire=0){ 
  108.         // 永不超時(shí) 
  109.         if($expire == 0){ 
  110.             $ret = $this->getRedis()->set($key$value); 
  111.         }else
  112.             $ret = $this->getRedis()->setex($key$expire$value); 
  113.         } 
  114.         return $ret
  115.     } 
  116.   
  117.     /** 
  118.      * 讀緩存 
  119.      * 
  120.      * @param string $key 緩存KEY,支持一次取多個(gè) $key = array('key1','key2') 
  121.      * @return string || boolean  失敗返回 false, 成功返回字符串 
  122.      */ 
  123.     public function get($key){ 
  124.         // 是否一次取多個(gè)值 
  125.         $func = is_array($key) ? 'mGet' : 'get'
  126.         // 沒(méi)有使用M/S 
  127.         if(! $this->_isUseCluster){ 
  128.             return $this->getRedis()->{$func}($key); 
  129.         } 
  130.         // 使用了 M/S 
  131.         return $this->_getSlaveRedis()->{$func}($key); 
  132.     } 
  133.   
  134.     /** 
  135.      * 條件形式設(shè)置緩存,如果 key 不存時(shí)就設(shè)置,存在時(shí)設(shè)置失敗 
  136.      * 
  137.      * @param string $key 緩存KEY 
  138.      * @param string $value 緩存值 
  139.      * @return boolean 
  140.      */ 
  141.     public function setnx($key$value){ 
  142.         return $this->getRedis()->setnx($key$value); 
  143.     } 
  144.   
  145.     /** 
  146.      * 刪除緩存 
  147.      * 
  148.      * @param string || array $key 緩存KEY,支持單個(gè)健:"key1" 或多個(gè)健:array('key1','key2') 
  149.      * @return int 刪除的健的數(shù)量 
  150.      */ 
  151.     public function remove($key){ 
  152.         // $key => "key1" || array('key1','key2') 
  153.         return $this->getRedis()->delete($key); 
  154.     } 
  155.   
  156.     /** 
  157.      * 值加加操作,類似 ++$i ,如果 key 不存在時(shí)自動(dòng)設(shè)置為 0 后進(jìn)行加加操作 
  158.      * 
  159.      * @param string $key 緩存KEY 
  160.      * @param int $default 操作時(shí)的默認(rèn)值 
  161.      * @return int 操作后的值 
  162.      */ 
  163.     public function incr($key,$default=1){ 
  164.         if($default == 1){ 
  165.             return $this->getRedis()->incr($key); 
  166.         }else
  167.             return $this->getRedis()->incrBy($key$default); 
  168.         } 
  169.     } 
  170.   
  171.     /** 
  172.      * 值減減操作,類似 --$i ,如果 key 不存在時(shí)自動(dòng)設(shè)置為 0 后進(jìn)行減減操作 
  173.      * 
  174.      * @param string $key 緩存KEY 
  175.      * @param int $default 操作時(shí)的默認(rèn)值 
  176.      * @return int 操作后的值 
  177.      */ 
  178.     public function decr($key,$default=1){ 
  179.         if($default == 1){ 
  180.             return $this->getRedis()->decr($key); 
  181.         }else
  182.             return $this->getRedis()->decrBy($key$default); 
  183.         } 
  184.     } 
  185.   
  186.     /** 
  187.      * 添空當(dāng)前數(shù)據(jù)庫(kù) 
  188.      * 
  189.      * @return boolean 
  190.      */ 
  191.     public function clear(){ 
  192.         return $this->getRedis()->flushDB(); 
  193.     } 
  194.   
  195.     /* =================== 以下私有方法 =================== */ 
  196.   
  197.     /** 
  198.      * 隨機(jī) HASH 得到 Redis Slave 服務(wù)器句柄 
  199.      * 
  200.      * @return redis object 
  201.      */ 
  202.     private function _getSlaveRedis(){ 
  203.         // 就一臺(tái) Slave 機(jī)直接返回 
  204.         if($this->_sn <= 1){ 
  205.             return $this->_linkHandle['slave'][0]; 
  206.         } 
  207.         // 隨機(jī) Hash 得到 Slave 的句柄 
  208.         $hash = $this->_hashId(mt_rand(), $this->_sn); 
  209.         return $this->_linkHandle['slave'][$hash]; 
  210.     } 
  211.   
  212.     /** 
  213.      * 根據(jù)ID得到 hash 后 0~m-1 之間的值 
  214.      * 
  215.      * @param string $id 
  216.      * @param int $m 
  217.      * @return int 
  218.      */ 
  219.     private function _hashId($id,$m=10) 
  220.     { 
  221.         //把字符串K轉(zhuǎn)換為 0~m-1 之間的一個(gè)值作為對(duì)應(yīng)記錄的散列地址 
  222.         $k = md5($id); 
  223.         $l = strlen($k); 
  224.         $b = bin2hex($k); 
  225.         $h = 0; 
  226.         for($i=0;$i<$l;$i++) 
  227.         { 
  228.             //相加模式HASH 
  229.             $h += <a href="/tags.php/substr/" target="_blank">substr</a>($b,$i*2,2); 
  230.         } 
  231.         $hash = ($h*1)%$m
  232.         return $hash
  233.     } 
  234.   
  235. }// End Class 
  236.   
  237. // ================= TEST DEMO ================= 
  238.   
  239. // 只有一臺(tái) Redis 的應(yīng)用 
  240. $redis = new RedisCluster(); 
  241. $redis->connect(array('host'=>'127.0.0.1','port'=>6379)); 
  242. $redis->set('id',35); 
  243. var_dump($redis->get('id')); 
  244.   
  245.   
  246. // 有一臺(tái) Master 和 多臺(tái)Slave 的集群應(yīng)用 
  247. $redis = new RedisCluster(true); 
  248. $redis->connect(array('host'=>'127.0.0.1','port'=>6379), true);// master 
  249. $redis->connect(array('host'=>'127.0.0.1','port'=>63791), false);// slave 1 
  250. $redis->connect(array('host'=>'127.0.0.1','port'=>63792), false);// slave 2 
  251. $redis->set('id',100); 
  252. for($i=1; $i<=100; ++$i){ 
  253.     var_dump($redis->get('id')).PHP_EOL; 
  254. //Vevb.com 
  255.   
  256. // phpRedis 擴(kuò)展的更多高級(jí)操作 
  257. $redis = new RedisCluster(); 
  258. $redis->connect(array('host'=>'127.0.0.1','port'=>6379)); 
  259. $ret = $redis->getRedis()->ping();// phpRedis 原始API 
  260. 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

26. 設(shè)置訪問(wèn)swap文件的線程數(shù),最好不要超過(guò)機(jī)器的核數(shù),如果設(shè)置為0,那么所有對(duì)swap文件的操作都是串行的,可能會(huì)造成比較長(zhǎng)時(shí)間的延遲。默認(rèn)值為4

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 安顺市| 云浮市| 邳州市| 滕州市| 廊坊市| 祁阳县| 肇源县| 军事| 景德镇市| 都匀市| 房产| 太保市| 北辰区| 河北省| 噶尔县| 永康市| 方城县| 靖江市| 沈阳市| 鹤山市| 北安市| 西和县| 苏尼特左旗| 忻州市| 禄丰县| 开鲁县| 茶陵县| 米林县| 渭南市| 泾源县| 木兰县| 成武县| 武鸣县| 义马市| 中方县| 乌兰浩特市| 山阳县| 浙江省| 普定县| 门源| 郸城县|