Redis 指令手册中文版

jopen 12年前
     <p><strong>连接控制</strong></p>    <p></p>    <p>QUIT 关闭连接</p>    <p>AUTH (仅限启用时)简单的密码验证</p>    <p><strong>适合全体类型的命令</strong></p>    <p>EXISTS key 判断一个键是否存在;存在返回 1;否则返回0;</p>    <p>DEL key 删除某个key,或是一系列key;DEL key1 key2 key3 key4</p>    <p>TYPE key 返回某个key元素的数据类型 ( none:不存在,string:字符,list,set,zset,hash)</p>    <p>KEYS pattern 返回匹配的key列表 (KEYS foo*:查找foo开头的keys)</p>    <p>RANDOMKEY 随机获得一个已经存在的key,如果当前数据库为空,则返回空字符串</p>    <p>RENAME oldname newname更改key的名字,新键如果存在将被覆盖</p>    <p>RENAMENX oldname newname 更改key的名字,如果名字存在则更改失败</p>    <p>DBSIZE返回当前数据库的key的总数</p>    <p>EXPIRE设置某个key的过期时间(秒),(EXPIRE bruce 1000:设置bruce这个key1000秒后系统自动删除)注意:如果在还没有过期的时候,对值进行了改变,那么那个值会被清除。</p>    <p>TTL查找某个key还有多长时间过期,返回时间秒</p>    <p>SELECT index 选择数据库</p>    <p>MOVE key dbindex 将指定键从当前数据库移到目标数据库 dbindex。成功返回 1;否则返回0(源数据库不存在key或目标数据库已存在同名key);</p>    <p>FLUSHDB 清空当前数据库中的所有键</p>    <p>FLUSHALL 清空所有数据库中的所有键</p>    <p><strong>处理字符串的命令</strong></p>    <p>SET key value 给一个键设置字符串值。SET keyname datalength data (SET bruce 10 paitoubing:保存key为burce,字符串长度为10的一个字符串paitoubing到数据库),data最大不可超过1G。</p>    <p>GET key获取某个key 的value值。如key不存在,则返回字符串“nil”;如key的值不为字符串类型,则返回一个错误。</p>    <p>GETSET key value可以理解成获得的key的值然后SET这个值,更加方便的操作 (SET bruce 10 paitoubing,这个时候需要修改bruce变成1234567890并获取这个以前的数据paitoubing,GETSET bruce 10 1234567890)</p>    <p>MGET key1 key2 … keyN 一次性返回多个键的值</p>    <p>SETNX key value SETNX与SET的区别是SET可以创建与更新key的value,而SETNX是如果key不存在,则创建key与value数据</p>    <p>MSET key1 value1 key2 value2 … keyN valueN 在一次原子操作下一次性设置多个键和值</p>    <p>MSETNX key1 value1 key2 value2 … keyN valueN 在一次原子操作下一次性设置多个键和值(目标键不存在情况下,如果有一个以上的key已存在,则失败)</p>    <p>INCR key 自增键值</p>    <p>INCRBY key integer 令键值自增指定数值</p>    <p>DECR key 自减键值</p>    <p>DECRBY key integer 令键值自减指定数值</p>    <p><strong>处理 lists 的命令</strong></p>    <p>RPUSH key value 从 List 尾部添加一个元素(如序列不存在,则先创建,如已存在同名Key而非序列,则返回错误)</p>    <p>LPUSH key value 从 List 头部添加一个元素</p>    <p>LLEN key 返回一个 List 的长度</p>    <p>LRANGE key start end从自定的范围内返回序列的元素 (LRANGE testlist 0 2;返回序列testlist前0 1 2元素)</p>    <p>LTRIM key start end修剪某个范围之外的数据 (LTRIM testlist 0 2;保留0 1 2元素,其余的删除)</p>    <p>LINDEX key index返回某个位置的序列值(LINDEX testlist 0;返回序列testlist位置为0的元素)</p>    <p>LSET key index value更新某个位置元素的值</p>    <p>LREM key count value 从 List 的头部(count正数)或尾部(count负数)删除一定数量(count)匹配value的元素,返回删除的元素数量。</p>    <p>LPOP key 弹出 List 的第一个元素</p>    <p>RPOP key 弹出 List 的最后一个元素</p>    <p>RPOPLPUSH srckey dstkey 弹出 _srckey_ 中最后一个元素并将其压入 _dstkey_头部,key不存在或序列为空则返回“nil”</p>    <p><strong>处理集合(sets)的命令(有索引无序序列)</strong></p>    <p>SADD key member增加元素到SETS序列,如果元素(membe)不存在则添加成功 1,否则失败 0;(SADD testlist 3 \n one)</p>    <p>SREM key member 删除SETS序列的某个元素,如果元素不存在则失败0,否则成功 1(SREM testlist 3 \N one)</p>    <p>SPOP key 从集合中随机弹出一个成员</p>    <p>SMOVE srckey dstkey member 把一个SETS序列的某个元素 移动到 另外一个SETS序列 (SMOVE testlist test 3\n two;从序列testlist移动元素two到 test中,testlist中将不存在two元素)</p>    <p>SCARD key 统计某个SETS的序列的元素数量</p>    <p>SISMEMBER key member 获知指定成员是否存在于集合中</p>    <p>SINTER key1 key2 … keyN 返回 key1, key2, …, keyN 中的交集</p>    <p>SINTERSTORE dstkey key1 key2 … keyN 将 key1, key2, …, keyN 中的交集存入 dstkey</p>    <p>SUNION key1 key2 … keyN 返回 key1, key2, …, keyN 的并集</p>    <p>SUNIONSTORE dstkey key1 key2 … keyN 将 key1, key2, …, keyN 的并集存入 dstkey</p>    <p>SDIFF key1 key2 … keyN 依据 key2, …, keyN 求 key1 的差集。官方例子:</p>    <p>key1 = x,a,b,c</p>    <p>key2 = c</p>    <p>key3 = a,d</p>    <p>SDIFF key1,key2,key3 => x,b</p>    <p>SDIFFSTORE dstkey key1 key2 … keyN 依据 key2, …, keyN 求 key1 的差集并存入 dstkey</p>    <p>SMEMBERS key 返回某个序列的所有元素</p>    <p>SRANDMEMBER key 随机返回某个序列的元素</p>    <p><strong>处理有序集合(sorted sets)的命令 (zsets)</strong></p>    <p>ZADD key score member 添加指定成员到有序集合中,如果目标存在则更新score(分值,排序用)</p>    <p>ZREM key member 从有序集合删除指定成员</p>    <p>ZINCRBY key increment member 如果成员存在则将其增加_increment_,否则将设置一个score为_increment_的成员</p>    <p>ZRANGE key start end 返回升序排序后的指定范围的成员</p>    <p>ZREVRANGE key start end 返回降序排序后的指定范围的成员</p>    <p>ZRANGEBYSCORE key min max 返回所有符合score >= min和score <= max的成员 ZCARD key 返回有序集合的元素数量 ZSCORE key element 返回指定成员的SCORE值 ZREMRANGEBYSCORE key min max 删除符合 score >= min 和 score <= max 条件的所有成员</p>    <p><strong>排序(List, Set, Sorted Set)</strong></p>    <p>SORT key BY pattern LIMIT start end GET pattern ASC|DESC ALPHA 按照指定模式排序集合或List</p>    <p>SORT mylist</p>    <p>默认升序 ASC</p>    <p>SORT mylist DESC</p>    <p>SORT mylist LIMIT 0 10</p>    <p>从序号0开始,取10条</p>    <p>SORT mylist LIMIT 0 10 ALPHA DESC</p>    <p>按首字符排序</p>    <p>SORT mylist BY weight_*</p>    <p>SORT mylist BY weight_* GET object_*</p>    <p>SORT mylist BY weight_* GET object_* GET #</p>    <p>SORT mylist BY weight_* STORE resultkey</p>    <p>将返回的结果存放于resultkey序列(List)</p>    <p><strong>持久控制</strong></p>    <p>SAVE 同步保存数据到磁盘</p>    <p>BGSAVE 异步保存数据到磁盘</p>    <p>LASTSAVE 返回上次成功保存到磁盘的Unix时间戳</p>    <p>SHUTDOWN 同步保存到服务器并关闭 Redis 服务器(SAVE+QUIT)</p>    <p>BGREWRITEAOF 当日志文件过长时重写日志文件</p>    <p><strong>远程控制命令</strong></p>    <p>INFO 提供服务器的信息和统计信息</p>    <p>MONITOR 实时输出所有收到的请求</p>    <p>SLAVEOF 修改复制选项</p>    <p><strong>redis目前提供四种数据类型:string,list,set及zset(sorted set)。</strong></p>    <p>* string是最简单的类型,你可以理解成与Memcached一模一个的类型,一个key对应一个value,其上支持的操作与Memcached的操 作类似。但它的功能更丰富。</p>    <p>* list是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等。操作中key理解为链表的名字。</p>    <p>* set是集合,和我们数学中的集合概念相似,对集合的操作有添加删除元素,有对多个集合求交并差等操作。操作中key理解为集合的名字。</p>    <p>* zset是set的一个升级版本,他在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的 值调整顺序。可以理解了有两列的mysql表,一列存value,一列存顺序。操作中key理解为zset的名字。</p>    <p><strong>协议</strong></p>    <p></p>    <p>redis目前只有基于TCP的文本协议,与memcache类似,有一些改进。</p>    <p>客户端通常发送</p>    <p>命令 参数… 值字节数\r\n</p>    <p>值\r\n</p>    <p>服务端的返回,根据第一个字节,可以判断:</p>    <p>- 错误信息</p>    <p>+ 普通文本信息</p>    <p>$ 变长字节数,$6表示CRLF之后有6个字节的字符</p>    <p>: 返回一个整数</p>    <p>* 返回组数,即*6表示CRLF之后将返回6组变长字符</p>    <p><strong>注意事项:</strong></p>    <p>Key不可包含空格或者回车符</p>    <p>Key不要过长或过短,应使其有意义,如”comment:1234:reply.to”</p>    <p>http://phpd.cn/archives/259</p>