Redis 学习笔记
http://redis.cn/commands.html
一、命令
全部(All)
关键字(Keys)
字符串(String)
哈希(Hashs)
列表(Lists)
集合(Sets)
有序集合(SortedSets)
发布/订阅(Pub/Sub)
事务(Transactions)
脚本(Scripting)
连接(Connection)
服务(Server)
1、APPENDkeyvalue
如果key已经存在,并且值为字符串,那么这个命令会把value追加到原来值(value)的结尾。如果key不存在,那么它将首先创建一个空字符串的key,再执行追加操作,这种情况APPEND将类似于SET操作。
redis>EXISTSmykey
(integer)0
redis>APPENDmykey"Hello"
(integer)5
redis>APPENDmykey"World"
(integer)11
redis>GETmykey
"HelloWorld"
2AUTHpassword
验证服务器为redis服务请求设置一个密码。
3BGREWRITEAOF
异步重写追加文件
后台保存DB。会立即返回OK状态码。Redisforks,父进程继续提供服务以供客户端调用,子进程将DB数据保存到磁盘然后退出。如果操作成功,可以通过客户端命令LASTSAVE来检查操作结果。
4BITCOUNTkey[start][end]
统计字符串指定起始位置的字节数
Countthenumberofsetbits(populationcounting)inastring.
redis>SETmykey"foobar"
OK
redis>BITCOUNTmykey
(integer)26
redis>BITCOUNTmykey00
(integer)4
redis>BITCOUNTmykey11
(integer)6
5BITOPoperationdestkeykey[key...]支持多个key的按位yuns
Performbitwiseoperationsbetweenstrings
ommandsupportsfourbitwiseoperations:AND,OR,XORandNOT
BITOPANDdestkeysrckey1srckey2srckey3...srckeyN
BITOPORdestkeysrckey1srckey2srckey3...srckeyN
BITOPXORdestkeysrckey1srckey2srckey3...srckeyN
BITOPNOTdestkeysrckey
SETkey1"foobar"
OK
redis>SETkey2"abcdef"
OK
redis>BITOPANDdestkey1key2
ERRDon'tknowwhattodofor"bitop"
redis>GETdest
(nil)
6BLPOPkey[key...]timeout
删除,并获得该列表中的第一元素,或阻塞,直到有一个可用
BLPOP是阻塞式列表的弹出原语。它是命令LPOP的阻塞版本,这是因为当给定列表内没有任何元素可供弹出的时候,连接将被BLPOP命令阻塞。当给定多个key参数时,按参数key的先后顺序依次检查各个列表,弹出第一个非空列表的头元素。
当BLPOP被调用时,如果给定key内至少有一个非空列表,那么弹出遇到的第一个非空列表的头元素,并和被弹出元素所属的列表的名字key一起,组成结果返回给调用者。
当存在多个给定key时,BLPOP按给定key参数排列的先后顺序,依次检查各个列表。我们假设keylist1不存在,而list2和list3都是非空列表。考虑以下的命令:
BLPOPlist1list2list30
BLPOP保证返回一个存在于list2里的元素(因为它是从list1-->list2-->list3这个顺序查起的第一个非空列表)。
阻塞行为
如果所有给定key都不存在或包含空列表,那么BLPOP命令将阻塞连接,直到有另一个客户端对给定的这些key的任意一个执行LPUSH或RPUSH命令为止。
一旦有新的数据出现在其中一个列表里,那么这个命令会解除阻塞状态,并且返回key和弹出的元素值。
当BLPOP命令引起客户端阻塞并且设置了一个非零的超时参数timeout的时候,若经过了指定的timeout仍没有出现一个针对某一特定key的push操作,则客户端会解除阻塞状态并且返回一个nil的多组合值(multi-bulkvalue)。
timeout参数表示的是一个指定阻塞的最大秒数的整型值。当timeout为0是表示阻塞时间无限制。
7BRPOPkey[key...]timeout
删除,并获得该列表中的最后一个元素,或阻塞,直到有一个可用
redis>DELlist1list2
(integer)0
redis>RPUSHlist1abc
(integer)3
redis>BRPOPlist1list20
1)"list1"
2)"c"
8CLIENTKILLip:port
关闭客户端连接
9CLIENTLIST
获得客户端连接列表
10CLIENTGETNAME
获得当前连接名称
11CLIENTSETNAMEconnection-name
设置当前连接的名字
12CONFIGGETparameter
获取配置参数的值
redis>configget*max-*-entries*
1)"hash-max-zipmap-entries"
2)"512"
3)"list-max-ziplist-entries"
4)"512"
5)"set-max-intset-entries"
6)"512"
举例说明,像redis.conf里面的如下配置:
save9001
save30010
它的意思是:如果900秒内有一个数据发生变化,或者300秒内有10个数据发生变化,那么使用CONFIGGET查看时将会看到"900130010"。
13CONFIGSETparametervalue
获取配置参数的值
14CONFIGRESETSTAT
复位再分配使用info命令报告的统计
15DBSIZE
返回当前数据库里面的keys数量
16DEBUGOBJECTkey
获取一个key的debug信息
17DEBUGSEGFAULT
使服务器崩溃
18DECRkey
整数原子减1
redis>SETmykey"10"
OK
redis>DECRmykey
(integer)9
redis>SETmykey"234293482390480948029348230948"
OK
redis>DECRmykey
ERRvalueisnotanintegeroroutofrange
redis>
19DECRBYkeydecrement
原子减指定的整数
redis>SETmykey"10"
OK
redis>DECRBYmykey5
(integer)5
redis>
20DELkey[key...]
删除一个key
redis>SETkey1"Hello"
OK
redis>SETkey2"World"
OK
redis>DELkey1key2key3
(integer)2
redis>
21DISCARD
丢弃所有MULTI之后发的命令
22DUMPkey
导出key的值
序列化给定key,并返回被序列化的值,使用RESTORE命令可以将这个值反序列化为Redis键。
redis>SETmykey10
OK
redis>DUMPmykey
"\u0000\xC0\n\u0006\u0000\xF8r?\xC5\xFB\xFB_("
redis>
23ECHOmessage
回显输入的字符串
24EVALscriptnumkeyskey[key...]arg[arg...]
在服务器端执行LUA脚本
25EVALSHAsha1numkeyskey[key...]arg[arg...]
在服务器端执行LUA脚本
26EXEC
执行所有MULTI之后发的命令
27EXISTSkey
查询一个key是否存在
28EXPIREkeyseconds
设置一个key的过期的秒数
redis>SETmykey"Hello"
OK
redis>EXPIREmykey10
(integer)1
redis>TTLmykey
(integer)10
redis>SETmykey"HelloWorld"
OK
redis>TTLmykey
(integer)-1
redis>
29FLUSHALL
清空所有数据库
30FLUSHDB
清空当前的数据库
31GETkey
获取key的值
32GETBITkeyoffset
返回位的值存储在关键的字符串值的偏移量。
redis>SETBITmykey71
(integer)0
redis>GETBITmykey0
(integer)0
redis>GETBITmykey7
(integer)1
redis>GETBITmykey100
(integer)0
redis>
33GETRANGEkeystartend
获取存储在key上的值的一个子字符串
redis>SETmykey"Thisisastring"
OK
redis>GETRANGEmykey03
"This"
redis>GETRANGEmykey-3-1
"ing"
redis>GETRANGEmykey0-1
"Thisisastring"
redis>GETRANGEmykey10100
"string"
redis>
34GETSETkeyvalue
设置一个key的value,并获取设置前的值
自动将key对应到value并且返回原来key对应的value。
GETSET可以和INCR一起使用实现支持重置的计数功能。举个例子:每当有事件发生的时候,一段程序都会调用INCR给keymycounter加1,但是有时我们需要获取计数器的值,并且自动将其重置为0。这可以通过GETSETmycounter"0"来实现:
redis>INCRmycounter
(integer)1
redis>GETSETmycounter"0"
"1"
redis>GETmycounter
"0"
redis>
35HDELkeyfield[field...]
删除一个或多个哈希域
从key指定的哈希集中移除指定的域。在哈希集中不存在的域将被忽略。如果key指定的哈希集不存在,它将被认为是一个空的哈希集,该命令将返回0。
redis>HSETmyhashfield1"foo"
(integer)1
redis>HDELmyhashfield1
(integer)1
redis>HDELmyhashfield2
(integer)0
redis>
36HEXISTSkeyfield
判断给定域是否存在于哈希集中
redis>HSETmyhashfield1"foo"
(integer)1
redis>HEXISTSmyhashfield1
(integer)1
redis>HEXISTSmyhashfield2
(integer)0
redis>
37HGETkeyfield
读取哈希域的的值
redis>HSETmyhashfield1"foo"
(integer)1
redis>HGETmyhashfield1
"foo"
redis>HGETmyhashfield2
(nil)
redis>
38HGETALLkey
从哈希集中读取全部的域和值
redis>HSETmyhashfield1"Hello"
(integer)1
redis>HSETmyhashfield2"World"
(integer)1
redis>HGETALLmyhash
1)"field1"
2)"Hello"
3)"field2"
4)"World"
redis>
39HINCRBYkeyfieldincrement
将哈希集中指定域的值增加给定的数字
redis>HSETmyhashfield5
(integer)1
redis>HINCRBYmyhashfield1
(integer)6
redis>HINCRBYmyhashfield-1
(integer)5
redis>HINCRBYmyhashfield-10
(integer)-5
redis>
40HINCRBYFLOATkeyfieldincrement
将哈希集中指定域的值增加给定的浮点数
redis>HSETmykeyfield10.50
(integer)1
redis>HINCRBYFLOATmykeyfield0.1
"10.6"
redis>HSETmykeyfield5.0e3
(integer)0
redis>HINCRBYFLOATmykeyfield2.0e2
"5200"
redis>
41HKEYSkey
获取hash的所有字段
redis>HSETmyhashfield1"Hello"
(integer)1
redis>HSETmyhashfield2"World"
(integer)1
redis>HKEYSmyhash
1)"field1"
2)"field2"
redis>
42HLENkey
获取hash里所有字段的数量
-----------------------------------------------------
2014-07-04
1、获取键值的数据类型
settest:foo1
redis127.0.0.1:6379>typetest:foo
string
redis127.0.0.1:6379>lpushtest:bar1
(integer)1
redis127.0.0.1:6379>typetest:bar
list
lpush向指定的列表类型键中增加一个元素,如果键不存在则创建它。
2、hsetnxkeyfieldvalue如果字段存在,将不执行任何操作
3、hincrbykeyfieldincrement
例如
hincrbypersonscore60