<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[静怡家园]]></title> 
<link>http://www.zhanghaijun.com/index.php</link> 
<description><![CDATA[书山有路勤为径，学海无涯苦作舟！]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[静怡家园]]></copyright>
<item>
<link>http://www.zhanghaijun.com/post/929/</link>
<title><![CDATA[CentOS 6.4 安装Redis 2.6.13和phpRedis扩展]]></title> 
<author>碟舞飞扬 &lt;webmaster@zhanghaijun.com&gt;</author>
<category><![CDATA[Linux技术]]></category>
<pubDate>Sat, 11 May 2013 03:23:50 +0000</pubDate> 
<guid>http://www.zhanghaijun.com/post/929/</guid> 
<description>
<![CDATA[ 
	第一步：下载安装所需文件<br/>http://redis.io/download<br/>wget http://redis.googlecode.com/files/redis-2.6.13.tar.gz<br/>http://www.tcl.tk/software/tcltk/download.html<br/>wget http://prdownloads.sourceforge.net/tcl/tcl8.6.0-src.tar.gz<br/>https://github.com/nicolasff/phpredis<br/>wget https://github.com/nicolasff/phpredis/archive/master.zip<br/>由于网址重定向最终下载的文件是master没有后缀，其实就是一个zip文件，使用unzip master 解压出来的文件夹是phpredis-master。<br/><br/>第二步：安装编译软件<br/>2.1、安装tcl<br/>tar xzvf tcl8.6.0-src.tar.gz<br/>cd tcl8.6.0/unix<br/>./configure<br/>make && make install<br/><br/>如果不先安装tcl在编译redis的时候，执行make test 会报以下错误，这步也可以省略，不执行make test 直接执行make install 对redis的启动和关闭没有什么影响。<br/>[root@localhost redis]# make test<br/>cd src && make test<br/>make[1]: Entering directory `/usr/local/webserver/redis/src'<br/>You need tcl 8.5 or newer in order to run the Redis test<br/>make[1]: *** [test] Error 1<br/>make[1]: Leaving directory `/usr/local/webserver/redis/src'<br/>make: *** [test] Error 2<br/><br/>2.2、安装redis<br/>tar xzvf redis-2.6.13.tar.gz<br/>mv redis-2.6.13 /usr/local/webserver/redis<br/>cd /usr/local/webserver/redis<br/>make<br/>make test&nbsp;&nbsp;#可以省略<br/>make install<br/><br/>2.3、配置<br/>源码包中有一个默认的配置文件，文件名redis.conf，我们可以根据自己的需要修改相关的参数，<br/>&nbsp;&nbsp;daemonize：默认值no，该参数用于定制redis服务是否以守护模式运行。<br/>&nbsp;&nbsp;pidfile：默认值/var/run/redis.pid，指定redis服务的进程号文件路径，以守护模式运行时需要配置本参数；<br/>&nbsp;&nbsp;port：默认值6379，指定redis服务的端口；<br/>&nbsp;&nbsp;bind：绑定ip，默认是本机所有网络设备；<br/>&nbsp;&nbsp;timeout：客户端空闲n秒后断开连接；<br/>&nbsp;&nbsp;loglevel：设置服务端的日志级别，有下列几种选择：<br/>&nbsp;&nbsp;debug：记录详细信息，用于开发或调试；<br/>&nbsp;&nbsp;verbose：提供很多有用的信息，但是又不像debug那么详尽，默认就是这一选项；<br/>&nbsp;&nbsp;notice：适度提醒，多用于产品环境；<br/>&nbsp;&nbsp;warning：仅显示重要的警告信息；<br/>&nbsp;&nbsp;logfile：指定日志的输出路径，默认值stdout，表示输出到屏幕，守护模式时则输出到/dev/null；<br/>&nbsp;&nbsp;如果要输出日志到syslog中，可以启动syslog-enabled yes，默认该选项值为no。<br/>&nbsp;&nbsp;databases：指定数据库的数量，默认为16个，默认使用的数据库是DB 0。<br/>以下为快照相关的设置<br/>&nbsp;&nbsp;save <seconds> <changes>：指定多长时间刷新快照至磁盘，这个选项有两个属性值，只有当两个属性值均满足时才会触发；可以设置多种级别，例如默认的参数文件中就设置了：<br/>&nbsp;&nbsp;save 900 1：每900秒(15分钟)至少一次键值变更时被触发；<br/>&nbsp;&nbsp;save 300 10：每300秒(5分钟)至少10次键值变更时被触发；<br/>&nbsp;&nbsp;save 60 10000：每60秒至少10000次键值变更时被触发；<br/>&nbsp;&nbsp;rdbcompression：默认值yes，当dump数据库时使用LZF压缩字符串对象，如果CPU资源比较紧张，可以设置为no，选择不压缩；<br/>&nbsp;&nbsp;dbfilename：默认值dump.rdb，dump到文件系统中的文件名；<br/>&nbsp;&nbsp;dir：默认值./，即当前目录，dump出的数据文件的存储路径；<br/>以下为复制相关的设置，复制默认是不启用的，因此在默认的参数文件下列表参数均被注释<br/>&nbsp;&nbsp;# slaveof <masterip> <masterport>：指定主端ip和端口，用于创建一个镜像服务；<br/>&nbsp;&nbsp;# masterauth <master-password>：如果master配置了密码的话，此处也需做设置；<br/>&nbsp;&nbsp;slave-serve-stale-data：默认值yes。当slave丢失与master端的连接，或者复制仍在处理，那么slave会有下列两种表现：<br/>&nbsp;&nbsp;当本参数值为yes时，slave为继续响应客户端请求，尽管数据已不同步甚至没有数据(出现在初次同步的情况下)；<br/>&nbsp;&nbsp;当本参数值为no时，slave会返回"SYNC with master in progreee"的错误信息；<br/>&nbsp;&nbsp;# repl-ping-slave-period：默认值10，指定slave定期ping master的周期；<br/>&nbsp;&nbsp;# repl-timeout：默认值60，指定超时时间。注意本参数包括批量传输数据和ping响应的时间。<br/>以下为安全相关的设置<br/>&nbsp;&nbsp;# requirepass：指定一个密码，客户端连接时也需要通过密码才能成功连接；<br/>&nbsp;&nbsp;# rename-command：重定义命令，例如将CONFIG命令更名为一个很复杂的名字：<br/>&nbsp;&nbsp;rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52；<br/>&nbsp;&nbsp;rename-command CONFIG ""：取消这个命令；<br/>以下为资源限制方面的设置<br/>&nbsp;&nbsp;# maxclients：指定客户端的最大并发连接数，默认是没有限制，直到redis无法创建新的进程为止，设置该参数值为0也表示不限制，如果该参数指定了值，当并发连接达到指定值时，redis会关闭所有新连接，并返回'max number of clients reached'的错误信息；<br/>&nbsp;&nbsp;# maxmemory：设置redis最大可使用内存。当达到最大内存后，redis会尝试按照设置的回收策略删除键值。如果无法删除键值，或者保留策略设置为不清除，那么redis就会向发出内存的请求返回错误信息。当把redis做为一级LRU的缓存时本参数较为有用。<br/>&nbsp;&nbsp;# maxmemory-policy：默认值volatile-lru，指定清除策略，有下列几种方法：<br/>&nbsp;&nbsp;volatile-lru -> remove the key with an expire set using an LRU algorithm<br/>&nbsp;&nbsp;allkeys-lru -> remove any key accordingly to the LRU algorithm<br/>&nbsp;&nbsp;volatile-random -> remove a random key with an expire set<br/>&nbsp;&nbsp;allkeys->random -> remove a random key, any key<br/>&nbsp;&nbsp;volatile-ttl -> remove the key with the nearest expire time (minor TTL)<br/>&nbsp;&nbsp;noeviction -> don't expire at all, just return an error on write operations<br/>&nbsp;&nbsp;# maxmemory-samples：默认值3，LRU和最小TTL策略并非严谨的策略，而是大约估算的方式，因此可以选择取样值以便检查。<br/>以下为APPEND ONLY模式的设置，默认情况下redis采用异步方式dump数据到磁盘上，极端情况下这可能会导致丢失部分数据(比如服务器突然宕机)，如果数据比较重要，不希望丢失，可以启用直写的模式，这种模式下redis会将所有接收到的写操作同步到appendonly.aof文件中，该文件会在redis服务启动时在内存中重建所有数据。注意这种模式对性能影响非常之大。<br/>&nbsp;&nbsp;appendonly：默认值no，指定是否启用直写模式；<br/>&nbsp;&nbsp;# appendfilename：直写模式的默认文件名appendonly.aof；<br/>&nbsp;&nbsp;appendfsync：调用fsync()方式让操作系统写数据到磁盘上，数据同步方式，有下列几种模式：<br/>&nbsp;&nbsp;always：每次都调用，比如安全，但速度最慢；<br/>&nbsp;&nbsp;everysec：每秒同步，这也是默认方式；<br/>&nbsp;&nbsp;no：不调用fsync，由操作系统决定何时同步，比如快的模式；<br/>&nbsp;&nbsp;no-appendfsync-on-rewrite：默认值no。当AOF fsync策略设置为always或everysec，后台保存进程会执行大量的I/O操作。某些linux配置下redis可能会阻塞过多的fsync()调用。<br/>&nbsp;&nbsp;auto-aof-rewrite-percentage：默认值100<br/>&nbsp;&nbsp;auto-aof-rewrite-min-size：默认值64mb<br/>以下为慢日志相关的设置，用以记录执行时间超出阀值的查询。执行时间不包括I/O操作或发送数据到客户端等占用的时间，而是真正执行命令所花费的时间(即线程阻塞不能接受其它请求的时间)：<br/>&nbsp;&nbsp;slowlog-log-slower-than：默认值10000，单位微秒，定义为慢的执行的阀值；<br/>&nbsp;&nbsp;slowlog-max-len：默认值1024，慢日志的最大数据。注意这会占用内容资源，如果要清空它可以执行SLOWLOG RESET命令；<br/>以下为虚拟内存相关的设置，虚拟内存在2.4版本废弃，这里也略过不提了<br/>&nbsp;&nbsp;vm-enabled no<br/>&nbsp;&nbsp;vm-swap-file /tmp/redis.swap<br/>&nbsp;&nbsp;vm-max-memory 0<br/>&nbsp;&nbsp;vm-page-size 32<br/>&nbsp;&nbsp;vm-pages 134217728<br/>&nbsp;&nbsp;vm-max-threads 4<br/>以下为高级配置相关的设置<br/>&nbsp;&nbsp;hash-max-zipmap-entries：默认值512，当某个map的元素个数达到最大值，但是其中最大元素的长度没有达到设定阀值时，其HASH的编码采用一种特殊的方式(更有效利用内存)。本参数与下面的参数组合使用来设置这两项阀值。设置元素个数；<br/>&nbsp;&nbsp;hash-max-zipmap-value：默认值64，设置map中元素的值的最大长度；这两个<br/>&nbsp;&nbsp;list-max-ziplist-entries：默认值512，与hash类似，满足条件的list数组也会采用特殊的方式以节省空间。<br/>&nbsp;&nbsp;list-max-ziplist-value：默认值64<br/>&nbsp;&nbsp;set-max-intset-entries：默认值512，当set类型中的数据都是数值类型，并且set中整型元素的数量不超过指定值时，使用特殊的编码方式。<br/>&nbsp;&nbsp;zset-max-ziplist-entries：默认值128，与hash和list类似。<br/>&nbsp;&nbsp;zset-max-ziplist-value：默认值64<br/>&nbsp;&nbsp;activerehashing：默认值yes，用来控制是否自动重建hash。Active rehashing每100微秒使用1微秒cpu时间排序，以重组Redis的hash表。重建是通过一种lazy方式，写入hash表的操作越多，需要执行rehashing的步骤也越多，如果服务器当前空闲，那么rehashing操作会一直执行。如果对实时性要求较高，难以接受redis时不时出现的2微秒的延迟，则可以设置activerehashing为no，否则建议设置为yes，以节省内存空间。<br/>以下为包含方面的设置<br/>&nbsp;&nbsp;include：用于指定包含其它参数文件。<br/><br/>2.4、启动redis<br/>/usr/local/webserver/redis/src/redis-server /usr/local/webserver/redis/6380.conf<br/>/usr/local/webserver/redis/src/redis-server /usr/local/webserver/redis/6379.conf<br/>/usr/local/webserver/redis/src/redis-server /usr/local/webserver/redis/6381.conf<br/><br/>可以使用netstat -ntl 查看下是否启动成功<br/>[root@localhost redis]# netstat -ntl<br/>Active Internet connections (only servers)<br/>Proto Recv-Q Send-Q Local Address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Foreign Address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; State&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>tcp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 0.0.0.0:3306&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.0.0.0:*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LISTEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>tcp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 192.168.1.21:6379&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0:*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LISTEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>tcp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 0.0.0.0:20587&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0:*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LISTEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>tcp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 0.0.0.0:875&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0:*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LISTEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>tcp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 192.168.1.21:6380&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0:*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LISTEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>tcp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 192.168.1.21:6381&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0:*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LISTEN<br/><br/>2.5、关闭redis<br/>/usr/local/webserver/redis/src/redis-cli -h 192.168.1.21 -p 6380 shutdown<br/>/usr/local/webserver/redis/src/redis-cli -h 192.168.1.21 -p 6379 shutdown<br/>/usr/local/webserver/redis/src/redis-cli -h 192.168.1.21 -p 6381 shutdown<br/><br/>第三步：安装phpredis（即REDIS的PHP扩展）<br/>unzip master<br/>cd phpredis-master/<br/>/usr/local/webserver/php5/bin/phpize<br/>./configure --with-php-config=/usr/local/webserver/php5/bin/php-config<br/>make && make install<br/>vi /usr/local/webserver/php5/etc/php.ini<br/>增加：extension = "redis.so"<br/>然后执行/usr/local/webserver/php5/bin/php -m 看看有没有redis的扩展，或者浏览一个phpinfo文件来查看是否有redis扩展。<br/><a href="http://www.zhanghaijun.com/attachment.php?fid=116" target="_blank"><img src="http://www.zhanghaijun.com/attachment.php?fid=116" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>另外redis有一个web管理工具phpRedisAdmin，试用了一下，感兴趣的朋友可以装上试试。<br/><a href="http://www.zhanghaijun.com/attachment.php?fid=117" target="_blank"><img src="http://www.zhanghaijun.com/attachment.php?fid=117" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><a href="http://www.zhanghaijun.com/attachment.php?fid=118" target="_blank"><img src="http://www.zhanghaijun.com/attachment.php?fid=118" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/>Tags - <a href="http://www.zhanghaijun.com/tags/centos/" rel="tag">centos</a> , <a href="http://www.zhanghaijun.com/tags/redis/" rel="tag">redis</a> , <a href="http://www.zhanghaijun.com/tags/phpredis/" rel="tag">phpredis</a>
]]>
</description>
</item><item>
<link>http://www.zhanghaijun.com/post/929/#blogcomment2425</link>
<title><![CDATA[[评论] CentOS 6.4 安装Redis 2.6.13和phpRedis扩展]]></title> 
<author>胡匹看析 &lt;g7rmzvmu@expressemail.org&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Tue, 17 Sep 2013 13:57:32 +0000</pubDate> 
<guid>http://www.zhanghaijun.com/post/929/#blogcomment2425</guid> 
<description>
<![CDATA[ 
	不是很明白啊。
]]>
</description>
</item>
</channel>
</rss>