redis常用命令总结(慎入)

 官方文档:Redis data types tutorial | Redis

目录

strings

Lists

Sets

Sorted sets

 Hashes

 其他


strings

  • 基本写法 setget
> set mykey value
ok
> get mykey
"value"
  • 如果键已经存在,我可以让set失败,在最后面加nx
> set mykey newval nx
(nil)
  • 只有在键已经存在的情况下,set才会成功,在最后面加xx
> set mykey newval xx
OK
  • mset设置或mget检索多个键值
> mset a 10 b 20 c 30
OK
> mget a b c
1) "10"
2) "20"
3) "30"
  • incr、decr当你设置的值为整数,你可以对他进行增量或递减,默认递增1
> set counter 100
OK
> incr counter 
(integer) 101
> incrby counter 50
(integer) 151
> decr counter
(integer) 150
> decrby counter 30
(integer) 120

Lists

  • lpush命令在列表的左侧(头部)添加一个或多个新元素
  • rpush命令在列表的右侧(尾部)添加一个或多个新元素
  • lrange命令从列表中提取元素的范围:

  注意:lrange接受两个索引,返回范围的第一个和最后一个元素。两个下标都可以为,告诉       Redis从末尾开始计数:因此-1是列表的最后一个元素,-2是列表的倒数第二个元素。如果是,则从头部开始计数。

> rpush mylist a b c
(integer)3
> lpush mylist 1 2 3
(integer)6
> lrange mylist 0 -1
1) "3"
2) "2"
3) "1"
4) "a"
5) "b"
6) "c"
  • 弹出元素是同时从列表中检索元素和从列表中删除元素的操作。你可以从左边lpop和右边rpop弹出元素
> rpush mylist a b c 
(integer) 3
> rpop mylist
"c"
> lpop mylist 
"a"
> lrange mylist 0 -1
1) "b"
  • ltrim命令类似于lrange,但它不是显示指定的元素范围,而是将该范围设置为新的列表值。所有超出给定范围的元素都将被删除
> rpush mylist a b c d
(integer) 4
> ltrim mylist 0 2
OK
> lrange mylist 0 -1
1) "a"
2) "b"
3) "c"
  • brpopblpop的命令,可以在列表为空时阻塞:只有当一个新元素添加到列表中时,或者当用户指定的超时到达时,它们才会返回给调用者。

     比如:tasks为空,设置阻塞5秒,且在5秒内没有给tasks列表添加新元素,结果如下

> brpop tasks 5
(nil)
(5.09s)

Sets

  • sadd添加一个或多个元素,元素具有唯一性
  • smembers查看里面所有元素
> sadd myset a b c
(integer) 3
> smembers myset 
1) "a"
2) "c"
3) "b"
  • sismember 检查一个元素是否存在
> sismember myset a
(integer) 1
  • sinter执行多个集之间的交集
  • sunionstore执行多个集之间的合并
  • scard查看集合的数量
> sadd seta 1 2 3 4 5
(integer) 5
> sadd setb 3 4 5 6 
(integer) 4
>sinter seta setb
1) "3"
2) "4"
3) "5"

Sorted sets

  • zadd类似于sadd,但有一个额外的参数(放在要添加的元素之前),即分数。zadd也是可变的,因此您可以自由地指定多个分数-值对
  •  zrange跟lrange用法一样
  • zrevrange得到相反的顺序排列
> zadd hackers 111 "Alan key"
(integer) 1
> zadd hackers 222 "Clanude Shanon"
(integer) 1
> zadd hackers 111 "Bask si"
(integer) 1
> zrange hackers 0 -1
1) "Alan key"
2) "Bask si"
3) "Clanude Shanon"

根据score  

      使用withscores参数也可以返回分数:

> zrange hackers 0 -1 withscores
1) "Alan key"
2) "111"
3) "Bask si"
4) "111"
5) "Clanude Shanon"
6) "222"
  • zrangebysore 让我们得到某个分数之前元素(zrangebysore key min max)
>zrangebyscore hackers -inf 111
1) "Alan key"
2) "Bask si"
  • zremrangebyscore 删除元素的范围,并返回删除的数量
> zremrangebyscore hackers 200 400
(integer) 1

根据lex 

  • zrank可以问一个元素在有序元素集中的位置是什么,返回下标
> zrank hackers "Bask si"
(integer) 1
  •  zrangebylex 获得元素的范围
  • zrevrangebylex 得到相反的顺序排列
  • zremrangebylex 删除元素的范围
  • zlexcount 获得该范围内数目
> zadd hackers 0 "Alan Kay" 0 "Sophie Wilson" 0 "Richard Stallman" 0
  "Anita Borg" 0 "Yukihiro Matsumoto" 0 "Hedy Lamarr" 0 "Claude Shannon"
  0 "Linus Torvalds" 0 "Alan Turing"

> zrangebylex hackers [B [P
1) "Claude Shannon"
2) "Hedy Lamarr"
3) "Linus Torvalds"

 Hashes

  • hset设置一个或多个散列字段的值
> hset user:223 username martina firstName Martina lastName Elisa country GB
(integer) 4
  • hget返回给定字段的值
> hget user:223 username 
"martina"
  • hmget返回一个或多个给定字段的值
> hmget user:223 username lastName
1) "martina"
2) "Elisa"
  • hgetall 返回所有值
> hgetall user:223
1) "username"
2) "martina"
3) "firstName"
4) "Martina"
5) "lastName"
6) "Elisa"
7) "country"
8) "GB"
  • hkeys 返回所有key值
> hkeys user:223
1) "username"
2) "firstName"
3) "lastName"
4) "country"
  • hvals 返回所有的value
> hvals user:223
1) "martina"
2) "Martina"
3) "Elisa"
4) "GB"

 其他

1.修改或查询key空间

exists 判断是否key存在

del 删除key

> set mykey hello
OK
> exists mykey
(integer) 1
> del mykey
(integer) 1
> exists mykey
(integer) 0

2.type 判断key的类型

> set mykey x
OK
> type mykey
string
> del mykey
(integer) 1
> type mykey
none

3.expire 设置key值得有效期(秒)

> set key some-value
OK
> expire key 5
(integer) 1
> get key (immediately)
"some-value"
> get key (after some time)
(nil)

简写

> set key some-value ex 5

ttl用来检查剩余生存时间

> ttl key
(integer) 2

你可能感兴趣的:(redis)