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
SET test17 'this is a test17' PX 20000
SET test18 'this is a test18' NX
SET test18 'this is a test18888' XX
SET test19 'this is a test19' EX 100 NX
SET test20 'this is a test20' EX 100 PX 300000 NX
SET testStr1 'this is a test'
注意:如果key存在,同名会产生覆盖
GETRANGE:返回字符串中一部分
语法:GETRANGE key start end
GETRANGE testStr2 0 4
GETRANGE testStr2 0 -3
GETRANGE testStr2 -4 -2
GETRANGE testStr2 0 1000
LLEN和LRANGE
LLEN:得到列表的长度
语法:LLEN key
LLEN myList2 (得到列表myList2的长度为2)
LLEN myList112 (因为myList112 列表不存在,所以返回的是0)
LRANGE:获取列表片段
语法:LRANGE key start stop (start是起始点,stop是结束点,获取起始点和结束点中间这部分的片段。)
LRANGE myList1 0 -1 (获取所有元素,其中0表示列表的第一个元素,-1表示列表的最后一个元素。)
LRANGE myList1 0 0 ( 获取列表的第一个元素“e”)
LRANGE myList1 0 2 ( 获取列表的前三个元素“e”“d”“c”)
LRANGE myList1 -3 -1 ( 获取列表的最后三个元素“test2”“test3”“test3”)
LRANGE myList1 100 3(因为start下标‘100’比列表的最大下标end ‘3’大,所以返回的空列表)
LRANGE myList1 0 1000(因为myList1列表的长度为10,即使stop比列表长度大,也依然返回到列表的末尾,所以还是返回myList1中的十个元素。)
LRANGE myList1 3 1000(如果stop比列表长度大,返回到列表的末尾,不能说是整个列表,因为起始点不一定是列表的第一个元素,我们可以从列表的第四个元素开始。)
注意:
如果start下标比列表的最大下标end大,返回的空列表
如果stop比列表长度大,返回到列表的末尾
RPUSH:向列表右端添加元素
(一次添加一个或多个都可以,R代表Right)
语法:RPUSH key value ...
RPUSH myList1 test1 test2 test3 (向myList1列表中添加三个元素分别为test1、test2 以及test3)
LRANGE myList1 0 -1 (这时,我们再查看一下列表元素。我们可以看出它先在列表右端插入test1,然后插入test2,最后插入test3,这样的形式)
RPUSH myList1 test3 test4 (再来添加一个重复元素test3 ,也是可以的。)
LRANGE myList1 0 -1 (这时,我们再查看一下列表元素。可以看到即使是重复的元素也可以添加在同一个列表中。)
LPUSHX:向列表头部添加元素,只有key存在再来添加
语法:LPUSHX key value
注意:一次只能添加一个值
EXISTS myList2 (看myList2 是否存在,存在返回1,不存在返回0。)
LPUSHX myList2 a (向列表myList2 头部添加元素a,返回0表示添加不成功。)
LRANGE myList2 0 -1 (查看myList2 列表元素,返回empty list or set,表示列表元素为空。)
EXISTS myList2 (我们还可以查看myList2 是否存在,存在返回1,不存在返回0。这就证明LPUSHX只能向存在的列表来添加元素,如果列表不存在,它不会先自动创建列表。)
LPUSH myList2 a (因为它不存在,所以先执行创建myList2这个列表的操作,再将a这个元素插入到我们的列表myList2 的左端。成功则返回列表的长度1,证明这个列表里面有1个元素。)
LPUSHX myList2 b (这时,再向一个已存在的列表myList2中添加元素,就可以成功了。)
LRANGE myList2 0 -1 (我们再来得到一下myList2的元素)
RPUSHX:向列表尾部添加元素,只有key存在再来添加
语法:RPUSHX key value
注意:一次只能添加一个值,它的用法和LPUSHX一样
LINDEX:获得指定索引元素的值
语法:LINDEX key index
LINDEX myList2 3 (获得myList2 列表中索引为3的元素的值)
LINDEX myList2 3 5 (注意LINDEX 后面只能跟一个index,否则会报错。)
LINDEX myList2 9 (获得myList2 列表中索引9的元素的值)
LINDEX myList2 -3 (获得myList2 列表中索引为-3,也就是说从后往前数的第三个元素的值。)
LINDEX myList2 1000 (获得myList2 列表中索引为1000的元素的值,因为索引超出了列表的范围,所以它返回的是nil。)
LSET:设置指定索引元素的值
语法:LSET key index value
LSET myList2 0 king (设置myList2 列表中第一个元素的值为‘king’)
LRANGE myList2 0 0(这时我们再来获取myList2 的第一个元素就变成了king)
LSET myList22 0 king(对于一个不存在的列表myList22进行设置,会报错。)
LSET myList22 1000 king(超出列表索引范围也会报错)
摘自http://www.maiziedu.com/wiki/redis/list2/