redis localhost:6007> keys test
(empty list or set)
set-get:
redis localhost:6007> set test 'test'
OK
redis localhost:6007> get test
"test"
del:删除某个key,特别注意如果某个key不存在,用命令行get时会返回nil
redis localhost:6007> del test
(integer) 1
redis localhost:6007> get test
(nil)
ttl:查看某个key的过期时间。可以看到如果key不存在,则ttl返回-1(与版本有关,2.8之前返回-1,2.8之后返回-2);如果key存在并且永不过期,则ttl返回-1;如果key存在并且设置了过期,则返回key的剩余存活时间
redis localhost:6007> get test
(nil)
redis localhost:6007> ttl test
(integer) -1
redis localhost:6007> set test 'test'
OK
redis localhost:6007> ttl test
(integer) -1
redis localhost:6007> get test
"test"
expire:设置key的过期时间
redis localhost:6007> expire test 100
(integer) 1
redis localhost:6007> ttl test
(integer) 98
mget:获取多个key对应的value
redis localhost:6007> mget test test1
1) "test"
2) "test1"
decr:自减1
redis localhost:6007> decr test
(error) ERR value is not an integer or out of range
redis localhost:6007> set test 3
OK
redis localhost:6007> decr test
(integer) 2
incr:自增1
redis localhost:6007> incr test
(integer) 3
redis localhost:6007> get test
"3"
append:字符串追加
redis localhost:6007> append test 'test'
(integer) 5
redis localhost:6007> get test
"3test"
上面所有的可归结于字符串操作,可以看到redis支持string类型,以及set,list,zset,hash类型
value类型:string,list,set,zset,hash
list:列表,一维数组,元素可重复
set:无序集合,一维数组,元素不可重复
zset:排序集合,一维数组,有顺序
hash:哈希,关联数组 list操作:数组,下表为0,1,2,3....
redis localhost:6007> lset list 0 'list0'
(error) ERR no such key
redis localhost:6007> lpush list 'list0'
(integer) 1
redis localhost:6007> lget list
(error) ERR unknown command 'lget'
redis localhost:6007> lrange list 0 1
1) "list0"
解释:
lset:直接用lset是错误的,因为list必须存在才能使用该命令
lpush:往list中添加元素,如果list不存在则创建list并添加元素
lget:没有这个命令
lrange:列出list的指定条目
用法:LRANGE key start stop,start表示起始下标从0开始,stop表示终止下标从0开始,stop不是条目数,而是结尾处的下标值
redis localhost:6007> lrange list 0 0
1) "list0"
redis localhost:6007> lpush list 'list1'
(integer) 2
redis localhost:6007> lrange list 0 1
1) "list1"
2) "list0"
redis localhost:6007> lset list 0 'list-new0'
OK
redis localhost:6007> lrange list 0 1
1) "list-new0"
2) "list0"
解释:
lrange之前解释过了。
lpush添加元素到list
lset:lset key index value,修改list的某个下标内的值。复杂度为O(1),可见数据结构不是链表
获取list的某个index的值,获取list的某一段的值
redis localhost:6007> lpush list 'list 2'
(integer) 3
redis localhost:6007> lrange list 0 -1
1) "list 2"
2) "list-new0"
3) "list0"
redis localhost:6007> lrange list 0 0
1) "list 2"
redis localhost:6007> lrange list 0 1
1) "list 2"
2) "list-new0"
解释:
lrange:可以获取单个下标对应的值,也可以获取一段连续的index值。例如:lrange list 0 0(获取0号元素的值);lrange list 0 1(获取0号,1号元素的值)
lpush:在list的表头插入元素,返回值为列表的长度
lpop:弹出list的表头,返回表头的value
redis localhost:6007> lrange list 0 -1
1) "list 2"
2) "list-new0"
3) "list0"
redis localhost:6007> lpop list
"list 2"
redis localhost:6007> lrange list 0 -1
1) "list-new0"
2) "list0"
rpush:表尾插入元素,返回list长度
redis localhost:6007> rpush list 'list-last'
(integer) 3
redis localhost:6007> lrange list 0 -1
1) "list-new0"
2) "list0"
3) "list-last"
rpush:list允许插入相同的元素值