|
一、获得键名列表
127.0.0.1:6379> KEYS *
(empty list or set)
127.0.0.1:6379> set bar 1
OK
127.0.0.1:6379> KEYS *
1) "bar"
KEYS ×列出redis所有的键,由于数据库开始并没有任何键所以为空。在添加bar后再使用KEYS就可以列出bar这个键
判断key是否存在:
127.0.0.1:6379> EXISTS bar
(integer) 1
127.0.0.1:6379> EXISTS nobar
(integer) 0
删除key:
127.0.0.1:6379> DEL bar
(integer) 1
127.0.0.1:6379> DEL bar
(integer) 0
返回1是成功,0是由于key值不存在。
利用xargs技巧:
redis-cli KEYS "user:*" | xargs redis-cli DEL,这句性能并不是是否理想,性能更好的删除语句:
redis-cli DEL `redis-cli KEYS "user:*"`
获得key数据类型:
127.0.0.1:6379> SET foo 1
127.0.0.1:6379> TYPE foo
string
127.0.0.1:6379> LPUSH bar 1
127.0.0.1:6379> TYPE bar
list
字符串:
赋值与取值:
SET key value
GET key
递增:INCR key
增加指定的整数:INCRBY key number
减少指定数:DECR key (减一) , DECRBY key number
增加指定浮点数: INCREBYFLOAT key increment
向尾部追加值: APPEND key value
获得字符串长度 STRLEN key
同时获得多个键值:MGET key [key ...]
MSET key value [key value ... ]
127.0.0.1:6379> MSET key1 hello key2 world key3 ray
OK
127.0.0.1:6379> GET key2
"world"
127.0.0.1:6379> MGET key1 key2 key3
1) "hello"
2) "world"
3) "ray"
INCR: INCR key-name 将键存储的值加1
DECR: DECR key-name 将存储的值减1
INCRBY: INCRBY key-name amount 将键存储的值加上一个整数amount
DECRBY: DECRBY key-name amount 将键存储的值减去整数amount
INCRBYFLOAT: INCRBYFLOAT key-name amount 将键存储的值加上浮点输amount
位操作:GETBIT key offset
SETBIT key offset value
BITCOUNT key start end
BITOP operation destkey key [key...]
APPEND: APPEND key-name value 将值value 追加到给点的key-name当前存储的值的末尾
GETRANGE: GETRANGE key-name start end 获取一个由偏移量start至end范围内所有字符串组成的子串,包括start和end在内
SETRANGE: SETRANGE key-name offset value 将从start偏移开始的子串设置为给定值
GETBIT: GETBIT key-name offset 将字节串看作是二进制串(bit string)并返回位串中偏移量为offset的二进制位的值
SETBIT: SETBIT key-name offset value 将字节串看作是二进制位串,并将位串中偏移为offset的二进制位的值设置为value
BITCOUNT: BITCOUNT key-name start end 统计二进制位串里值为1的二进制位的数量,如果指定了可选的start和end偏移量那么只对偏移量范围内的二进制位进行统计
BITOP: BITOP operation dest-key kay-name 对一个或多个二进制位串执行:AND,OR,XOR,NOT在内的任意一种按位运算操作。并将计算结果保存到dest-key
例子:
127.0.0.1:6379[3]> APPEND ns 'hello'
(integer) 5
127.0.0.1:6379[3]> APPEND ns 'world'
(integer) 10
127.0.0.1:6379[3]> GETRANGE ns 3 7
"lowor"
127.0.0.1:6379[3]> SETRANGE ns 6 'W'
(integer) 10
127.0.0.1:6379[3]> SETRANGE ns 0 'H'
(integer) 10
127.0.0.1:6379[3]> get ns
"HellowWrld"
127.0.0.1:6379[3]> SETBIT ns2 2 1
(integer) 0
127.0.0.1:6379[3]> SETBIT ns2 7 1
(integer) 0
127.0.0.1:6379[3]> get ns2
二、散列:
赋值与取值:
HSET key field value
HGET key filed
HMSET key field value [filed value ... ]
HMGET key field [field ... ]
HGETALL key
127.0.0.1:6379> HSET car price 500
(integer) 1
127.0.0.1:6379> HSET car name BMW
(integer) 1
127.0.0.1:6379> HGET car name
"BMW"
127.0.0.1:6379> HGET car price
"500"
设置多个键值:
HMSET key field1 value1 filed2 value2
HMGET获得多个字段值:
127.0.0.1:6379> HMGET car price name
1) "500"
2) "BMW"
HMGETALL car 获取所有字段和字段值
127.0.0.1:6379> HGETALL car
1) "price"
2) "500"
3) "name"
4) "BMW"
判断字段是否存在: HEXISTS key field
127.0.0.1:6379> HEXISTS car model
(integer) 0
127.0.0.1:6379> HSET car model c200
(integer) 1
127.0.0.1:6379> HEXISTS car model
(integer) 1
字段不存在时赋值: HSETNX key field value ,如果字段存在,HSETNX将不执行任何操作。
127.0.0.1:6379> HSETNX car model e400
(integer) 0
127.0.0.1:6379> HGET car model
"c200"
增加数字:HINCRBY key field increment
删除字段: HDEL key filed [filed ... ]
命令拾遗:
之获取字段或字段值:
HKEYS key
HVALS key
HVALS 获取键中所有的字段值,例如:
127.0.0.1:6379> HVALS car
1) "500"
2) "BMW"
3) "c200"
获得字段数量:HLEN key
列表类型:
左边增加元素: LPUSH key value [value ... ]
右边增加元素: RPUSH key value [value ... ]
127.0.0.1:6379> LPUSH numbers 1
(integer) 1
127.0.0.1:6379> LPUSH numbers 2 3
(integer) 3
127.0.0.1:6379> RPUSH numbers 0 -1
(integer) 5
numbers 数据如下:
[ 3 2 1 0 -1 ]
从列表两端弹出元素:
LPOP key,弹出左边第一个元素
RPOP key,弹出右边第一个元素
LEN key 获取列表元素中的元素个数
LRANGE key start stop , 获得列表片段(从0开始),stop值大于实际范围则会返回右边所有元素
127.0.0.1:6379> LRANGE numbers 0 2
1) "2"
2) "1"
3) "0"
127.0.0.1:6379> LRANGE numbers 0 200
1) "2"
2) "1"
3) "0"
删除列表中指定的值:
LREM key count value,删除前count个值为value的元素。当count大于0时,LREM从列表左边开始删除,当count小于0时,LREM从右边开始删除前count个value。
当count等于0,LREM会删除所有值为value的元素127.0.0.1:6379> RPUSH numbers 2
(integer) 4
127.0.0.1:6379> LRANGE numbers 0 -1
1) "2"
2) "1"
3) "0"
4) "2"
127.0.0.1:6379> LREM numbers -1 2
(integer) 1
127.0.0.1:6379> LRANGE numbers 0 -1
1) "2"
2) "1"
3) "0"
命令拾遗:
获取/设置指定所以的元素值:LINDEX key value 返回指定索引的元素,索引从0开始
LSET key index value 将索引为index的元素赋值为value
127.0.0.1:6379> LINDEX numbers 0
"2"
127.0.0.1:6379> LINdEX numbers -1
"0"
127.0.0.1:6379> LSET numbers 1 7
OK
127.0.0.1:6379> LINdEX numbers 1
"7"
只保留列表指定片段
LTRIM key start end
LTRIM 删除指定范围之外的所有元素
127.0.0.1:6379> LRANGE numbers 0 -1
1) "2"
2) "7"
3) "0"
127.0.0.1:6379> LTRIM numbers 1 2
OK
127.0.0.1:6379> LRANGE numbers 0 -1
1) "7"
2) "0"
向列表插入元素:
LINSERT key BEFORE|AFTER pivot value
127.0.0.1:6379> LRANGE numbers 0 -1
1) "7"
2) "0"
127.0.0.1:6379> LINSERT numbers AFTER 7 3
(integer) 3
127.0.0.1:6379> LRANGE numbers 0 -1
1) "7"
2) "3"
3) "0"
127.0.0.1:6379> LINSERT numbers BEFORE 7 1
(integer) 4
127.0.0.1:6379> LRANGE numbers 0 -1
1) "1"
2) "7"
3) "3"
4) "0"
将元素从一个列表转到另一个列表
RPOPLPUSH source destination
RPUSH: RPUSH key-name value 将一个或者多个value推入列表的右端
LPUSH: LPUSH key-name value 将一个或者多个value推入列表的左端
RPOP: RPOP key-name 移除并返回最右端的元素
LPOP: LPOP key-name 移除并返回最左端的元素
LINDEX: LINDEX key-name offset 返回列表偏移量为offset的元素
LRANGE: LRANGE key-name start end 返回列表从start偏移到end范围内所有元素.其中偏移量start和end的元素也包含在被返回的元素之内
LTRIM: LTRIM key-name start end 对列表进行修剪只保留从start 到 end范围内的元素.其中偏移量为start和end的元素会保留下来
集合类型:
增加/删除元素:
SADD key member [member ... ]
SREM key member [ member ... ]
127.0.0.1:6379> SADD letters a
(integer) 1
127.0.0.1:6379> SADD letters a b c
(integer) 2
127.0.0.1:6379> SMEMBERS letters
1) "b"
2) "a"
3) "c"
127.0.0.1:6379> SREM lettes c
(integer) 0
127.0.0.1:6379> SMEMBERS letters
1) "b"
2) "a"
3) "c"
判断元素是否在集合中:
SISMEMBER key member
127.0.0.1:6379> SISMEMBER letters a
(integer) 1
127.0.0.1:6379> SISMEMBER letters d
(integer) 0
集合运算:
差:SDIFF key [key ...]
交:SINTER key [key ...]
并:SUNION key [key ...]
127.0.0.1:6379> SADD setA 1 2 3
(integer) 3
127.0.0.1:6379> SADD setB 2 3 4
(integer) 3
127.0.0.1:6379> SDIFF setA setB
1) "1"
127.0.0.1:6379> SDIFF setB setA
1) "4"
127.0.0.1:6379> SINTER setA setB
1) "2"
2) "3"
127.0.0.1:6379> SUNION setA setB
1) "1"
2) "2"
3) "3"
4) "4"
命令拾遗:
获取集合中元素个数:
SCARD key
127.0.0.1:6379> SCARD setA
(integer) 3
集合运算并将结果存储:
SDIFFSTORE destination key [key ...]
SINTERSTORE destination key [key ...]
SUNIONSTORE destination key [key ...]
随机获取集合元素:
SRANDMEMBER key [count]
127.0.0.1:6379> SRANDMEMBER letters 3
1) "a"
2) "b"
3) "c"
从集合中弹出一个元素:
SPOP key
SADD: SADD key-name item 将一个或者多个元素添加到集合里面,并返回被添加元素当原中原本部存在于集合里的元素数量.
SREM: SRM key-name item 从集合里面移除一个或多个元素,并返回被移除元素的数量.
SISMEMER: SISMEMER key-name 返回集合包含的所有元素
SRANDMEMBER: SRANDMEMBER key-name [count] 从集合里随机返回一个或多个元素,当count为正数时,命令返回随机元素不重复,负数时可能会重复
SPOP: SPOP key-name随机地移除集合中的一个元素,并返回被移除的元素
SMOVE: SMOVE source dest item 如果集合source 包含元素item,那么从集合source里面移除item,并将元素item添加到集合dest中.
集合运算:
SDIFF: SDIFF key-name1 key-name2 差集
SDIFFSTORE: SDIFF dest key-name1 key-name2 差集,并把结果保存在dest
SINTER: SINTER key-name1 key-name2 交集运算
SINTERSTORE: SINTERSTORE: dest key-name1 key-name2 交集运算,并把结果存储到dest
SUNION: SUNION key-name1 key-name2 并集
SUNIONSTORE: SUNIONSTORE dest key-name1 key-name2 并集,并把结果存储到dest
有序集合:
增加元素:
ZADD key score member [score member ... ]
127.0.0.1:6379> ZADD scoreboard 89 Tom 67 Peter 90 David 100 Ray
(integer) 4
127.0.0.1:6379> ZADD scoreboard 76 Peter
(integer) 0
127.0.0.1:6379> ZADD testborard 17E+307 a
(integer) 1
127.0.0.1:6379> ZADD testboard 1.5 b
(integer) 1
获取元素:
127.0.0.1:6379> ZSCORE testboard b
"1.5"
127.0.0.1:6379> ZSCORE scoreboard Tom
"89"
127.0.0.1:6379> ZSCORE scoreboard Ray
"100"
获得排名在某个范围元素列表:
ZRANGE key start stop [WITHSCORES] 从分数值小到大排序
ZREVRANGE key start stop [WITHSCORES] 按分数值从大到小排序
127.0.0.1:6379> ZREVRANGE scoreboard 0 -1
1) "Ray"
2) "David"
3) "Tom"
4) "Peter"
127.0.0.1:6379> ZRANGE scoreboard 0 -1
1) "Peter"
2) "Tom"
3) "David"
4) "Ray"
127.0.0.1:6379> ZRANGE scoreboard 0 -1 WITHSCORES
1) "Peter"
2) "76"
3) "Tom"
4) "89"
5) "David"
6) "90"
7) "Ray"
8) "100"
获取指定分数范围的元素
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
倒序:ZREVRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
127.0.0.1:6379> ZRANGEBYSCORE scoreboard 60 70
(empty list or set)
127.0.0.1:6379> ZRANGEBYSCORE scoreboard 60 80
1) "Peter"
127.0.0.1:6379> ZRANGEBYSCORE scoreboard (76 +inf
1) "Tom"
2) "David"
3) "Ray"
127.0.0.1:6379> ZRANGEBYSCORE scoreboard 76 +inf
1) "Peter"
2) "Tom"
3) "David"
4) "Ray"
右最高分的前三人:
127.0.0.1:6379> ZREVRANGEBYSCORE scoreboard 100 0 LIMIT 0 3
1) "Ray"
2) "David"
3) "Tom"
增加元素分数:
ZINCRBY key increment member
127.0.0.1:6379> ZINCRBY scoreboard 4 Jerry
"4"
127.0.0.1:6379> ZREVRANGEBYSCORE scoreboard 100 0 WITHSCORES
1) "Ray"
2) "100"
3) "David"
4) "90"
5) "Tom"
6) "89"
7) "Peter"
8) "76"
9) "Jerry"
10) "4"
获得集合元素的数量:
ZCARD key
127.0.0.1:6379> ZCARD scoreboard
(integer) 5
获得指定分数范围内的元素个数:
ZCOUNT key min max
127.0.0.1:6379> ZCOUNT scoreboard 90 100
(integer) 2
删除一个或多个元素
ZREM key member [member ...]
127.0.0.1:6379> ZREM scoreboard Peter
(integer) 1
127.0.0.1:6379> ZCARD scoreboard
(integer) 4
按照排名范围删除元素:
ZREMRANGEBYRANK key start stop
127.0.0.1:6379> ZADD testRem 1 a 2 b 3 c 4 d 5 e 6 f
(integer) 6
127.0.0.1:6379> ZREMRANGEBYRANK testRem 0 2
(integer) 3
127.0.0.1:6379> ZRANGE testRem 0 -1
1) "d"
2) "e"
3) "f"
获得元素的排名:
ZRANK key member
ZREVRANK key member
127.0.0.1:6379> ZRANK scoreboard Ray
(integer) 3
127.0.0.1:6379> ZREVRANK scoreboard Ray
(integer) 0
计算有序集合的交集:
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]
127.0.0.1:6379> ZADD sortedSets1 1 a 2 b
(integer) 2
127.0.0.1:6379> ZADD sortedSets2 10 a 30 b
(integer) 2
127.0.0.1:6379> ZINTERSTORE Result 2 sortedSets1 sortedSets2
(integer) 2
127.0.0.1:6379> ZRANGE Result 0 1 WITHSCORES
1) "a"
2) "11"
3) "b"
4) "32"
127.0.0.1:6379> ZINTERSTORE Result 2 sortedSets1 sortedSets2 AGGREGATE MIN
(integer) 2
127.0.0.1:6379> ZRANGE Result 0 1 WITHSCORES
1) "a"
2) "1"
3) "b"
4) "2"
127.0.0.1:6379> ZINTERSTORE Result 2 sortedSets1 sortedSets2 AGGREGATE MAX
(integer) 2
127.0.0.1:6379> ZRANGE Result 0 1 WITHSCORES
1) "a"
2) "10"
3) "b"
4) "30"
|
|
|