Set与getrange命令

一个键最多存储512MB


语法:SET key value [EX seconds] [PX milliseconds] [NX|XX]

EX seconds:设置键的key的过期时间SET key value EX seconds -- SETEX

PX milliseconds:以毫秒的形式设置过期时间SET key value PX milliseconds--PSETEX

NX:只有键不存在的时候才可以设置成功SET key value NX--SETNX

XX:只有key已经存在的时候才可以设置

SET test16 'this is a test16' EX 100

Redis1.png

SET test17 'this is a test17' PX 20000


Redis2.png 


SET test18 'this is a test18' NX

SET test18 'this is a test18888' XX


Redis3.png 

Redis4.png 


SET test19 'this is a test19' EX 100 NX


Redis5.png 

Redis6.png 

 

SET test20 'this is a test20' EX 100 PX 300000 NX


Redis7.png 

 

SET testStr1 'this is a test'

注意:如果key存在,同名会产生覆盖

 

Redis8.png


Redis9.png 




GETRANGE:返回字符串中一部分

 

语法:GETRANGE key start end

GETRANGE testStr2 0 4


redis13.png 

GETRANGE testStr2 0 -3

redis14.png

 

GETRANGE testStr2 -4 -2


redis15.png 

GETRANGE testStr2 0 1000


redis16.png


LLEN和LRANGE




LLEN:得到列表的长度

 

语法:LLEN key

 

LLEN myList2 (得到列表myList2的长度为2)


Redis4.png


Redis5.png 


LLEN myList112 (因为myList112 列表不存在,所以返回的是0)

 


LRANGE:获取列表片段

 

语法:LRANGE key start stop (start是起始点,stop是结束点,获取起始点和结束点中间这部分的片段。)

 

LRANGE myList1 0 -1  (获取所有元素,其中0表示列表的第一个元素,-1表示列表的最后一个元素。)


Redis6.png 


LRANGE myList1 0 0  ( 获取列表的第一个元素“e”)


Redis7.png 


LRANGE myList1 0 2 ( 获取列表的前三个元素“e”“d”“c”)


Redis8.png 


LRANGE myList1 -3 -1 ( 获取列表的最后三个元素“test2”“test3”“test3”)


Redis9.png 


LRANGE myList1 100 3(因为start下标‘100’比列表的最大下标end ‘3’大,所以返回的空列表)


Redis10.png 

 

LRANGE myList1 0 1000(因为myList1列表的长度为10,即使stop比列表长度大,也依然返回到列表的末尾,所以还是返回myList1中的十个元素。)


Redis11.png 


LRANGE myList1 3 1000(如果stop比列表长度大,返回到列表的末尾,不能说是整个列表,因为起始点不一定是列表的第一个元素,我们可以从列表的第四个元素开始。)


Redis12.png 


注意:

如果start下标比列表的最大下标end大,返回的空列表

如果stop比列表长度大,返回到列表的末尾


RPUSH:向列表右端添加元素


(一次添加一个或多个都可以,R代表Right)

 

语法:RPUSH key value ...

 

RPUSH myList1 test1 test2 test3 (向myList1列表中添加三个元素分别为test1、test2 以及test3)


Redis7.png 


LRANGE myList1 0 -1  (这时,我们再查看一下列表元素。我们可以看出它先在列表右端插入test1,然后插入test2,最后插入test3,这样的形式)


Redis8.png 


RPUSH myList1 test3 test4 (再来添加一个重复元素test3 ,也是可以的。)


Redis9.png 


LRANGE myList1 0 -1  (这时,我们再查看一下列表元素。可以看到即使是重复的元素也可以添加在同一个列表中。)


Redis10.png 

 


LPUSHX:向列表头部添加元素,只有key存在再来添加

 

语法:LPUSHX key value

 

注意:一次只能添加一个值

 

EXISTS myList2 (看myList2 是否存在,存在返回1,不存在返回0。)


Redis11.png 

 

LPUSHX myList2 a (向列表myList2 头部添加元素a,返回0表示添加不成功。)


Redis12.png 

 

LRANGE myList2 0 -1 (查看myList2 列表元素,返回empty list or set,表示列表元素为空。)


Redis13.png 


EXISTS myList2 (我们还可以查看myList2 是否存在,存在返回1,不存在返回0。这就证明LPUSHX只能向存在的列表来添加元素,如果列表不存在,它不会先自动创建列表。)


Redis14.png 


LPUSH myList2 a  (因为它不存在,所以先执行创建myList2这个列表的操作,再将a这个元素插入到我们的列表myList2 的左端。成功则返回列表的长度1,证明这个列表里面有1个元素。)


Redis15.png 


LPUSHX myList2 b (这时,再向一个已存在的列表myList2中添加元素,就可以成功了。)


Redis16.png 


LRANGE myList2 0 -1 (我们再来得到一下myList2的元素)


Redis17.png 



RPUSHX:向列表尾部添加元素,只有key存在再来添加

 

语法:RPUSHX key value

注意:一次只能添加一个值,它的用法和LPUSHX一样


LINDEX:获得指定索引元素的值

 

语法:LINDEX key index

 

LINDEX myList2 3  (获得myList2 列表中索引为3的元素的值)


Redis1.png 


LINDEX myList2 3 5 (注意LINDEX 后面只能跟一个index,否则会报错。)


Redis2.png 


LINDEX myList2 9 (获得myList2 列表中索引9的元素的值)


Redis3.png


LINDEX myList2 -3  (获得myList2 列表中索引为-3,也就是说从后往前数的第三个元素的值。)


Redis4.png 


LINDEX myList2 1000  (获得myList2 列表中索引为1000的元素的值,因为索引超出了列表的范围,所以它返回的是nil。)


Redis5.png 

 


LSET:设置指定索引元素的值

 

语法:LSET key index value

 

LSET myList2 0 king (设置myList2 列表中第一个元素的值为‘king’)


Redis6.png 


LRANGE myList2 0 0(这时我们再来获取myList2 的第一个元素就变成了king)


Redis7.png 


LSET myList22 0 king(对于一个不存在的列表myList22进行设置,会报错。)


Redis8.png 


LSET myList22 1000 king(超出列表索引范围也会报错)


Redis9.png


摘自http://www.maiziedu.com/wiki/redis/list2/