<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>redis &#8211; LPC影子技术分享</title>
	<atom:link href="https://www.mudbest.com/tag/redis/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.mudbest.com</link>
	<description>行影不离,忘之却步.</description>
	<lastBuildDate>Thu, 11 Mar 2021 17:38:28 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.2</generator>
	<item>
		<title>redis的hGetAll函数的性能问题</title>
		<link>https://www.mudbest.com/redis%e7%9a%84hgetall%e5%87%bd%e6%95%b0%e7%9a%84%e6%80%a7%e8%83%bd%e9%97%ae%e9%a2%98/</link>
		
		<dc:creator><![CDATA[hkshadow]]></dc:creator>
		<pubDate>Wed, 14 Jan 2015 07:58:51 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[分享]]></category>
		<category><![CDATA[hGetAll]]></category>
		<category><![CDATA[redis]]></category>
		<guid isPermaLink="false">http://www.mudbest.com/?p=2112</guid>

					<description><![CDATA[在没关注这个函数之前，一直用的Memcache的数据存储方式，但是自从更换了redis之后，对于一个hash的 ... <a title="redis的hGetAll函数的性能问题" class="read-more" href="https://www.mudbest.com/redis%e7%9a%84hgetall%e5%87%bd%e6%95%b0%e7%9a%84%e6%80%a7%e8%83%bd%e9%97%ae%e9%a2%98/" aria-label="阅读 redis的hGetAll函数的性能问题">阅读更多</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">在没关注这个函数之前，一直用的Memcache的数据存储方式，但是自从更换了redis之后，对于一个hash的数据存与取 对于Memcache方便甚多，但是问题来了，一个hash的列表如果量不大的情况，用hGetAll函数几乎看不出问题，一旦这个列表超过50或者更多时，此时用hGetAll函数便能很直观的看到性能问题，这里就不作数据分析了。<br><br>Redis是单线程的！当它处理一个请求时其他的请求只能等着。通常请求都会很快处理完，但是当我们使用HGETALL的时候，必须遍历每个字段来获取数据，这期间消耗的CPU资源和字段数成正比，如果还用了PIPELINING，无疑更是雪上加霜。</p>



<span id="more-2112"></span>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
PERFORMANCE = CPUs / OPERATIONs
</pre></div>


<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">也就是说，此场景下为了提升性能，要么增加运算过程中的CPU数量；要么降低运算过程中的操作数量。在为了继续使用hash结构的数据，又要解决此问题，比较方便的方法就是将hash以序列化字符串存储，取的时候先取出反序列化的数据，再用hGet(key,array(hash..))。</p>



<p class="wp-block-paragraph">例如：</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
$arrKey = array(&#039;dbfba184bef630526a75f2cd073a6098&#039;,&#039;dbfba184bef630526a75f2cd0dswet98&#039;)
$strKey = &#039;test&#039;;
$obj-&gt;hmGet($strKey,$arrKey);
</pre></div>


<p class="wp-block-paragraph">把原本的hGetAll操作简化为hGet，也就是说，不再需要遍历hash中的每一个字段，因此即便不能让多个CPU参与运算，但是却大幅降低了操作数量，所以性能的提升仍然是显著的；当然劣势也很明显，和所有的冗余方式一样，此方案浪费了大量的内存。</p>



<p class="wp-block-paragraph">有人会问，这样虽然没有了遍历字段的过程，但是却增加了反序列化的过程，而反序列化的成本往往也是很高的，难道这样也能提升性能？问题的关键在于开始我们遍历字段的操作是在一个cpu上完成的，后来反序列化的操作，不管是什么语言，都可以通过多进程或多线程来保证是在多个cpu上完成的，所以性能总体上是提升的。</p>



<p class="wp-block-paragraph">另外，很多人直觉是通过运行redis多实例来解决问题。确实，这样可以增加运算过程中的CPU数量，有助于提升性能，但是需要注意的是，hGetAll和PIPELINING往往会让运算过程中的操作数量呈几何级爆炸式增长，相比之下，我们能增加的redis多实例数量简直就是杯水车薪，所以本例中这种方法不能彻底解决问题。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PHP下的Redis使用与总结</title>
		<link>https://www.mudbest.com/php%e4%b8%8b%e7%9a%84redis%e4%bd%bf%e7%94%a8%e4%b8%8e%e6%80%bb%e7%bb%93/</link>
		
		<dc:creator><![CDATA[hkshadow]]></dc:creator>
		<pubDate>Thu, 24 Apr 2014 04:21:44 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[分享]]></category>
		<category><![CDATA[redis]]></category>
		<category><![CDATA[缓存]]></category>
		<guid isPermaLink="false">http://www.mudbest.com/?p=2033</guid>

					<description><![CDATA[关于redis的介绍这里就不写了，百科就能查到，Redis是一个开源的使用ANSI C语言编写、支持网络、可基 ... <a title="PHP下的Redis使用与总结" class="read-more" href="https://www.mudbest.com/php%e4%b8%8b%e7%9a%84redis%e4%bd%bf%e7%94%a8%e4%b8%8e%e6%80%bb%e7%bb%93/" aria-label="阅读 PHP下的Redis使用与总结">阅读更多</a>]]></description>
										<content:encoded><![CDATA[<p>关于redis的介绍这里就不写了，百科就能查到，Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库，并提供多种语言的API。</p>
<p><strong>一、利用PHP自带的libredis扩展库进行连接操作</strong><br />
<span id="more-2033"></span><br />
例一：</p>
<pre class="brush: php; title: ; notranslate">
$libredis = Libredis ();
$connection = $libredis-&gt;get_connection ( &quot;127.0.0.1&quot; );
// set a key
$batch = $libredis-&gt;create_batch ();
$batch-&gt;set ( 'hello', 'world' );
$batch-&gt;execute ( $connection );
// now fetch the key
$batch = $libredis-&gt;create_batch ();
$batch-&gt;get ( 'hello' );
$batch-&gt;execute ( $connection );
while ( $batch-&gt;next_reply ( $reply_type, $reply_value, $reply_length ) ) {
	echo $reply_value, PHP_EOL;
}
</pre>
<p>例二：</p>
<pre class="brush: php; title: ; notranslate">
$libredis = Libredis ();
$connection1 = $libredis-&gt;get_connection ( &quot;127.0.0.1:6379&quot; );
$connection2 = $libredis-&gt;get_connection ( &quot;127.0.0.1:6380&quot; );
$batch1 = $libredis-&gt;create_batch ();
$batch1-&gt;set ( 'hello', 'world' ); // add a 'set' command to batch1
$batch2 = $libredis-&gt;create_batch ();
$batch2-&gt;set ( 'hello2', 'world2' );
$executor = $libredis-&gt;create_executor ();
$executor-&gt;add ( $connection1, $batch1 ); // associate connection1 with batch1
$executor-&gt;add ( $connection2, $batch2 ); // associate connection2 with batch2
                                       // execute all batches against their corresponding connections in parallel, with a
                                       // 500 ms timeout on the whole operation.
$executor-&gt;execute ( 500 );
</pre>
<p><strong>二、远程连接redis并给redis加锁</strong></p>
<p>用法：redis-cli [OPTIONS] [cmd [arg [arg &#8230;]]]<br />
-h <主机ip>，默认是127.0.0.1<br />
-p <端口>，默认是6379<br />
-a <密码>，如果redis加锁，需要传递密码<br />
&#8211;help，显示帮助信息</p>
<p>通过对rendis-cli用法介绍，在192.168.99.44上连接192.168.99.39应该很简单：</p>
<pre class="brush: bash; title: ; notranslate">
&#x5B;root@hkshadow001 ~]# redis-cli -h 192.168.99.39 -p 6379 
redis 192.168.1.103:6379&gt; 
</pre>
<p>在192.168.99.44上对192.168.99.39设置个个string值 user.1.name=hkshadow</p>
<pre class="brush: bash; title: ; notranslate">
redis 192.168.1.103:6379&gt; set user.1.name hkshadow 
OK 
</pre>
<p>看到ok，表明设置成功了。然后直接在192.168.99.39上登陆，看能不能获取到这个值。</p>
<pre class="brush: bash; title: ; notranslate">
&#x5B;root@hkshadow001 ~]# redis-cli 
redis 127.0.0.1:6379&gt; get user.1.name 
&quot;hkshadow&quot; 
</pre>
<p>查看链接的用户这里显示的是hkshadow，说明192.168.99.44已经链接上了192.168.99.36，一般在内网进行redis链接相对是安全的，但在外网时需要加一个验证才是比较安全的，在这里设置一个账号验证。</p>
<pre class="brush: bash; title: ; notranslate">
&#x5B;root@hkshadow001 ~]# vim /etc/redis/6379.conf 
</pre>
<p>找到# requirepass foobared，去掉前面的注释&#8221;#&#8221;，并把foobared 替换为你自己的密码：&#8221;hi,redis&#8221;。<br />
保存配置文件之后，重启redis服务。</p>
<pre class="brush: bash; title: ; notranslate">
&#x5B;root@hkshadow001 ~]# /etc/init.d/redis_6379 stop  
Stopping ...  
Waiting for Redis to shutdown ...  
Redis stopped  
&#x5B;root@hkshadow001 ~]# /etc/init.d/redis_6379 start  
Starting Redis server... 
</pre>
<p>这时候再使用192.168.99.44连接192.168.99.39并获取user.1.name的值，看看发生什么。</p>
<pre class="brush: bash; title: ; notranslate">
&#x5B;root@linuxidc001 ~]# redis-cli -h 192.168.1.103 -p 6379  
redis 192.168.1.103:6379&gt; get user.1.name  
(error) ERR operation not permitted  
redis 192.168.1.103:6379&gt; 
</pre>
<p>报错了，因为刚刚增加了一个验证信息，需要以下操作。</p>
<pre class="brush: bash; title: ; notranslate">
redis 192.168.99.39:6379&gt; quit  
&#x5B;root@linuxidc001 ~]# redis-cli -h 192.168.1.103 -p 6379 -a &quot;hi,redis&quot;  //这里的之前配置里改的值
redis 192.168.99.39:6379&gt; get user.1.name  
&quot;hkshadow&quot; 
</pre>
<p><strong>三、redis-cli的使用</strong></p>
<p>TYPE key — 用来获取某key的类型<br />
KEYS pattern — 匹配所有符合模式的key，比如KEYS * 就列出所有的key了，当然，复杂度O(n)<br />
RANDOMKEY &#8211; 返回随机的一个key<br />
RENAME oldkey newkey — 改变key的名字<br />
SELECT: ./redis-cli select 6<br />
# 表示切换到数据库6  </p>
<pre class="brush: bash; title: ; notranslate">
SET: ./redis-cli -n 0 set nid 123456789 
# 表示向数据库0中插入字符串key为nid，value值为123456789  
</pre>
<pre class="brush: bash; title: ; notranslate">
GET: ./redis-cli -n 0 get nid 或者 ./redis-cli get nid 
# 表示获取数据库为0，key为nid的字符串，在不指定数据编号的情况下，默认连接的是0数据库，所以可以省略-n参数 
</pre>
<pre class="brush: bash; title: ; notranslate">
GETSET: ./redis-cli getset nid 987654321 
# 表示返回指定key的原始值，并指定一个新值给他 
</pre>
<pre class="brush: bash; title: ; notranslate">
MGET: ./redis-cli mget nid uid … 
# 表示获取多个key的值 
</pre>
<pre class="brush: bash; title: ; notranslate">
SETNX: ./redis-cli setnx nnid 888888 
# 表示当一个指定的key不存在时，设置这个key指定的value，如果存在，则设置不成功 
</pre>
<pre class="brush: bash; title: ; notranslate">
SETEX: ./redis-cli setex nid 5 666666 
# 表示设置一个key指定的value保存5秒后失效，设置key/value的有效期 
</pre>
<pre class="brush: bash; title: ; notranslate">
MSET: ./redis-cli mset nid0001 &quot;0001&quot; nid0002 &quot;0002&quot; nid0003 &quot;0003&quot;
# 表示多键值对的数据保存 
</pre>
<pre class="brush: bash; title: ; notranslate">
INCR: ./redis-cli incr count 
# 表示对给定key的value进行递增(+1)的操作,当然value必须是一个integer 
</pre>
<pre class="brush: bash; title: ; notranslate">
INCRBY: ./redis-cli incrby count 5 
# 表示对给定key的value进行指定步长的递增操作 
</pre>
<pre class="brush: bash; title: ; notranslate">
DECR: ./redis-cli decr count 
# 表示对给定key的value进行递减(-1)的操作 
</pre>
<pre class="brush: bash; title: ; notranslate">
DECRBY: ./redis-cli decrby count 7 
# 表示对给定key的value进行指定步长的递减操作 
</pre>
<pre class="brush: bash; title: ; notranslate">
APPEND: ./redis-cli append content &quot;bad&quot;   或者  ./redis-cli append content &quot;good&quot;
# 表示追加一个value到指定的key中，如果key不存在，则新建key 
</pre>
<pre class="brush: bash; title: ; notranslate">
SUBSTR: ./redis-cli substr content 0 4 
# 表示返回指定key的value的部分字符串
</pre>
<p># 列表操作，精华<br />
RPUSH key string — 将某个值加入到一个key列表末尾<br />
LPUSH key string — 将某个值加入到一个key列表头部<br />
LLEN key — 列表长度<br />
LRANGE key start end — 返回列表中某个范围的值，相当于mysql里面的分页查询那样<br />
LTRIM key start end — 只保留列表中某个范围的值<br />
LINDEX key index — 获取列表中特定索引号的值，要注意是O(n)复杂度<br />
LSET key index value — 设置列表中某个位置的值<br />
RPOP key </p>
<p># 集合操作<br />
SADD key member — 增加元素<br />
SREM key member — 删除元素<br />
SCARD key — 返回集合大小<br />
SISMEMBER key member — 判断某个值是否在集合中<br />
SINTER key1 key2 &#8230; keyN — 获取多个集合的交集元素<br />
SMEMBERS key — 列出集合的所有元素 </p>
<p><strong>四、删除redis所有KEY</strong><br />
Redis 中有删除单个 Key 的指令 DEL，但好像没有批量删除 Key 的指令，不过我们可以借助 Linux 的 xargs 指令来完成这个动作。</p>
<pre class="brush: bash; title: ; notranslate">
redis-cli keys &quot;*&quot; | xargs redis-cli del
//如果redis-cli没有设置成系统变量，需要指定redis-cli的完整路径
//如：/opt/redis/redis-cli keys &quot;*&quot; | xargs /opt/redis/redis-cli del
</pre>
<p>如果要指定 Redis 数据库访问密码，使用下面的命令：</p>
<pre class="brush: bash; title: ; notranslate">
redis-cli -a password keys &quot;*&quot; | xargs redis-cli -a password del
</pre>
<p>如果要访问 Redis 中特定的数据库，使用下面的命令：</p>
<pre class="brush: bash; title: ; notranslate">
//下面的命令指定数据序号为0，即默认数据库
redis-cli -n 0 keys &quot;*&quot; | xargs redis-cli -n 0 del
</pre>
<p>删除所有Key，可以使用Redis的flushdb和flushall命令</p>
<pre class="brush: bash; title: ; notranslate">
//删除当前数据库中的所有Key
flushdb
//删除所有数据库中的key
flushall
</pre>
<p>注：keys 指令可以进行模糊匹配，但如果 Key 含空格，就匹配不到了，暂时还没发现好的解决办法。</p>
<p><strong>五、redis-cli 命令总结</strong><br />
Redis提供了丰富的命令（command）对数据库和各种数据类型进行操作，这些command可以在Linux终端使用。<br />
在编程时，比如使用Redis 的Java语言包，这些命令都有对应的方法。下面将Redis提供的命令做一总结。</p>
<p><em>1、连接操作相关的命令</em><br />
quit：关闭连接（connection）<br />
auth：简单密码认证</p>
<p><em>2、对value操作的命令</em><br />
exists(key)：确认一个key是否存在<br />
del(key)：删除一个key<br />
type(key)：返回值的类型<br />
keys(pattern)：返回满足给定pattern的所有key<br />
randomkey：随机返回key空间的一个key<br />
rename(oldname, newname)：将key由oldname重命名为newname，若newname存在则删除newname表示的key<br />
dbsize：返回当前数据库中key的数目<br />
expire：设定一个key的活动时间（s）<br />
ttl：获得一个key的活动时间<br />
select(index)：按索引查询<br />
move(key, dbindex)：将当前数据库中的key转移到有dbindex索引的数据库<br />
flushdb：删除当前选择数据库中的所有key<br />
flushall：删除所有数据库中的所有key</p>
<p><em>3、对String操作的命令</em><br />
set(key, value)：给数据库中名称为key的string赋予值value<br />
get(key)：返回数据库中名称为key的string的value<br />
getset(key, value)：给名称为key的string赋予上一次的value<br />
mget(key1, key2,…, key N)：返回库中多个string（它们的名称为key1，key2…）的value<br />
setnx(key, value)：如果不存在名称为key的string，则向库中添加string，名称为key，值为value<br />
setex(key, time, value)：向库中添加string（名称为key，值为value）同时，设定过期时间time<br />
mset(key1, value1, key2, value2,…key N, value N)：同时给多个string赋值，名称为key i的string赋值value i<br />
msetnx(key1, value1, key2, value2,…key N, value N)：如果所有名称为key i的string都不存在，则向库中添加string，<br />
名称key i赋值为value i<br />
incr(key)：名称为key的string增1操作<br />
incrby(key, integer)：名称为key的string增加integer<br />
decr(key)：名称为key的string减1操作<br />
decrby(key, integer)：名称为key的string减少integer<br />
append(key, value)：名称为key的string的值附加value<br />
substr(key, start, end)：返回名称为key的string的value的子串</p>
<p><em>4、对List操作的命令</em><br />
rpush(key, value)：在名称为key的list尾添加一个值为value的元素<br />
lpush(key, value)：在名称为key的list头添加一个值为value的 元素<br />
llen(key)：返回名称为key的list的长度<br />
lrange(key, start, end)：返回名称为key的list中start至end之间的元素（下标从0开始，下同）<br />
ltrim(key, start, end)：截取名称为key的list，保留start至end之间的元素<br />
lindex(key, index)：返回名称为key的list中index位置的元素<br />
lset(key, index, value)：给名称为key的list中index位置的元素赋值为value<br />
lrem(key, count, value)：删除count个名称为key的list中值为value的元素。<br />
count为0，删除所有值为value的元素，count>0从头至尾删除count个值为value的元素，count<0从尾到头删除|count|个值为value的元素。 
lpop(key)：返回并删除名称为key的list中的首元素 rpop(key)：返回并删除名称为key的list中的尾元素 
blpop(key1, key2,… key N, timeout)：lpop命令的block版本。
即当timeout为0时，若遇到名称为key i的list不存在或该list为空，则命令结束。
如果timeout>0，则遇到上述情况时，等待timeout秒，如果问题没有解决，则对keyi+1开始的list执行pop操作。<br />
brpop(key1, key2,… key N, timeout)：rpop的block版本。参考上一命令。<br />
rpoplpush(srckey, dstkey)：返回并删除名称为srckey的list的尾元素，并将该元素添加到名称为dstkey的list的头部</p>
<p><em>5、对Set操作的命令</em><br />
sadd(key, member)：向名称为key的set中添加元素member<br />
srem(key, member) ：删除名称为key的set中的元素member<br />
spop(key) ：随机返回并删除名称为key的set中一个元素<br />
smove(srckey, dstkey, member) ：将member元素从名称为srckey的集合移到名称为dstkey的集合<br />
scard(key) ：返回名称为key的set的基数<br />
sismember(key, member) ：测试member是否是名称为key的set的元素<br />
sinter(key1, key2,…key N) ：求交集<br />
sinterstore(dstkey, key1, key2,…key N) ：求交集并将交集保存到dstkey的集合<br />
sunion(key1, key2,…key N) ：求并集<br />
sunionstore(dstkey, key1, key2,…key N) ：求并集并将并集保存到dstkey的集合<br />
sdiff(key1, key2,…key N) ：求差集<br />
sdiffstore(dstkey, key1, key2,…key N) ：求差集并将差集保存到dstkey的集合<br />
smembers(key) ：返回名称为key的set的所有元素<br />
srandmember(key) ：随机返回名称为key的set的一个元素</p>
<p><em>6、对zset（sorted set）操作的命令</em><br />
zadd(key, score, member)：向名称为key的zset中添加元素member，score用于排序。如果该元素已经存在，则根据score更新该元素的顺序。<br />
zrem(key, member) ：删除名称为key的zset中的元素member<br />
zincrby(key, increment, member) ：如果在名称为key的zset中已经存在元素member，则该元素的score增加increment；<br />
否则向集合中添加该元素，其score的值为increment<br />
zrank(key, member) ：返回名称为key的zset（元素已按score从小到大排序）中member元素的rank（即index，从0开始），<br />
若没有member元素，返回“nil”<br />
zrevrank(key, member) ：返回名称为key的zset（元素已按score从大到小排序）中member元素的rank（即index，从0开始），<br />
若没有member元素，返回“nil”<br />
zrange(key, start, end)：返回名称为key的zset（元素已按score从小到大排序）中的index从start到end的所有元素<br />
zrevrange(key, start, end)：返回名称为key的zset（元素已按score从大到小排序）中的index从start到end的所有元素<br />
zrangebyscore(key, min, max)：返回名称为key的zset中score >= min且score <= max的所有元素 
zcard(key)：返回名称为key的zset的基数 zscore(key, element)：返回名称为key的zset中元素element的
score zremrangebyrank(key, min, max)：删除名称为key的zset中rank >= min且rank <= max的所有元素 
zremrangebyscore(key, min, max) ：删除名称为key的zset中score >= min且score <= max的所有元素
zunionstore / zinterstore(dstkeyN, key1,…,keyN, WEIGHTS w1,…wN, AGGREGATE SUM|MIN|MAX)：对N个zset求并集和交集，
并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score，在进行AGGREGATE运算前，都要乘以对于的WEIGHT参数。
如果没有提供WEIGHT，默认为1。默认的AGGREGATE是SUM，即结果集合中元素的score是所有集合对应元素进行SUM运算的值，而MIN和MAX是指，
结果集合中元素的score是所有集合对应元素中最小值和最大值。

<em>7、对Hash操作的命令</em><br />
hset(key, field, value)：向名称为key的hash中添加元素field<—>value<br />
hget(key, field)：返回名称为key的hash中field对应的value<br />
hmget(key, field1, …,field N)：返回名称为key的hash中field i对应的value<br />
hmset(key, field1, value1,…,field N, value N)：向名称为key的hash中添加元素field i<—>value i<br />
hincrby(key, field, integer)：将名称为key的hash中field的value增加integer<br />
hexists(key, field)：名称为key的hash中是否存在键为field的域<br />
hdel(key, field)：删除名称为key的hash中键为field的域<br />
hlen(key)：返回名称为key的hash中元素个数<br />
hkeys(key)：返回名称为key的hash中所有键<br />
hvals(key)：返回名称为key的hash中所有键对应的value<br />
hgetall(key)：返回名称为key的hash中所有的键（field）及其对应的value</p>
<p><em>8、持久化</em><br />
save：将数据同步保存到磁盘<br />
bgsave：将数据异步保存到磁盘<br />
lastsave：返回上次成功将数据保存到磁盘的Unix时戳<br />
shundown：将数据同步保存到磁盘，然后关闭服务</p>
<p><em>9、远程服务控制</em><br />
info：提供服务器的信息和统计<br />
monitor：实时转储收到的请求<br />
slaveof：改变复制策略设置<br />
config：在运行时配置Redis服务器</p>
<p>redis操作手册下载:<a href="http://www.mudbest.com/php%e4%b8%8b%e7%9a%84redis%e4%bd%bf%e7%94%a8%e4%b8%8e%e6%80%bb%e7%bb%93/php-redis%e4%b8%ad%e6%96%87%e5%b8%ae%e5%8a%a9%e6%89%8b%e5%86%8c/" rel="attachment wp-att-2036">php-redis中文帮助手册</a></p>
<p>相关文章：<br />
<a href="http://timyang.net/data/redis-misunderstanding/" title="Redis几个认识误区" target="_blank">Redis几个认识误区</a></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
