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

相关推荐