hash类型
设置值hset 获取值hget 127.0.0.1:6379> hset phone name apple (integer) 1 127.0.0.1:6379> hget phone name "apple"
同时设置多个字段和值(键相同)hset,同时获取多个字段的值(键相同)hget 127.0.0.1:6379> hmset phone price 12000 from America OK127.0.0.1:6379> hmget phone name price from 1) "apple" 2) "12000" 3) "America"
查看键中所有字段 127.0.0.1:6379> hkeys phone 1) "name" 2) "price" 3) "from"
查看键中所有值127.0.0.1:6379> hvals phone 1) "apple" 2) "12000" 3) "America"
查看键中所有的字段和值 127.0.0.1:6379> hgetall phone 1) "name" 2) "apple" 3) "price" 4) "12000" 5) "from" 6) "America"
查看键中字段的个数 127.0.0.1:6379> hlen phone (integer) 3
查看键中是否存在某个字段 127.0.0.1:6379> hexists phone price (integer) 1
键中某个字段增加一定值,只能是数字类型 127.0.0.1:6379> hincrby phone price 1000 (integer) 13000
127.0.0.1:6379> hget phone price "13000"
127.0.0.1:6379> hincrby phone name 100
(error) ERR hash value is not an integer
如果字段不存在则赋值,如果存在则不赋值
127.0.0.1:6379> hsetnx phone price 11000 (integer) 0 127.0.0.1:6379> hget phone price "13000" 127.0.0.1:6379> hsetnx phone generation 12 (integer) 1 127.0.0.1:6379> hget phone generation "12"
删除键中某个字段 127.0.0.1:6379> hdel phone generation (integer) 1 127.0.0.1:6379> hkeys phone 1) "name" 2) "price" 3) "from"
删除键 127.0.0.1:6379> del phone (integer) 1 127.0.0.1:6379> exists phone (integer) 0
总结:
增/改:hset hmset hsetnx hincrby
删:hdel
查:hget hmget hkeys hvals hgetall hlen hexists
未举例的hash命令:hincrbyfloat hstrlen hvals hscan
list类型
lpush从链表左端插入元素,可插入一个或多个
127.0.0.1:6379> lpush phone apple
(integer) 1
127.0.0.1:6379> lpush phone samsung huawei xiaomi
(integer) 4
lrange根据索引查看链表元素,支持反向索引(-1代表最右,-2代表倒数第二,以此类推)
127.0.0.1:6379> lrange phone 0 -1
1) "xiaomi"
2) "huawei"
3) "samsung"
4) "apple"
127.0.0.1:6379> lrange phone -2 -1
1) "samsung"
2) "apple"
linsert在指定元素左侧或者右侧插入元素
127.0.0.1:6379> linsert phone before xiaomi oppo
(integer) 5
127.0.0.1:6379> linsert phone after apple vovi
(integer) 6
127.0.0.1:6379> lrange phone 0 -1
1) "oppo"
2) "xiaomi"
3) "huawei"
4) "samsung"
5) "apple"
6) "vovi"
lset指定链表指定索引处元素的值
127.0.0.1:6379> lset phone 0 zhongxing
OK
lindex查看链表指定索引处元素的值
127.0.0.1:6379> lindex phone 0
"zhongxing"
127.0.0.1:6379> lrange phone 0 -1
1) "zhongxing"
2) "xiaomi"
3) "huawei"
4) "samsung"
5) "apple"
6) "vovi"
lpop从链表左端弹出一个元素
127.0.0.1:6379> lpop phone
"zhongxing"
rpop从链表右端弹出一个元素
127.0.0.1:6379> rpop phone
"vovi"
127.0.0.1:6379> lrange phone 0 -1
1) "xiaomi"
2) "huawei"
3) "samsung"
4) "apple"
lrem key count value删除count个数个值为value的元素
count>0从左侧删除count个元素,count<0从右端删除count个元素,count=0删除所有值为value的元素
127.0.0.1:6379> lrem phone 1 samsung
(integer) 1
127.0.0.1:6379> lrange phone 0 -1
1) "xiaomi"
2) "huawei"
3) "apple"
ltrim删除链表指定索引区间外的所有元素
127.0.0.1:6379> ltrim phone 0 1
OK
127.0.0.1:6379> lrange phone 0 -1
1) "xiaomi"
2) "huawei"
rpoplpush source desc从第一个链表右端弹出一个元素,放入第二个链表左端,如果是同一个链表,则为列表旋转
127.0.0.1:6379> lpush car benz bmw audi
(integer) 3
127.0.0.1:6379> rpoplpush car phone
"benz"
127.0.0.1:6379> lrange phone 0 -1
1) "benz"
2) "xiaomi"
3) "huawei"
127.0.0.1:6379> rpoplpush phone phone
"huawei"
127.0.0.1:6379> lrange phone 0 -1
1) "huawei"
2) "benz"
3) "xiaomi"
总结:
增:lpush rpush linsert
删: lpop rpop lrem ltrim
改:lset rpoplpush
查:lindex lrange llen
没有根据索引删除,很别扭
未举例的list命令:lpushx rpushx blpop brpop brpoplpush