Redis常见命令

string常用命令

# set 在缓冲中存一个key value
127.0.0.1:6379> set k1 v1  
OK
127.0.0.1:6379> get k1
"v1"

# 从缓存了删除key
127.0.0.1:6379> del k1 
(integer) 1
127.0.0.1:6379> get k1
(nil)

# 追加字符串
127.0.0.1:6379> append k1 23456  
(integer) 7
127.0.0.1:6379> get k1
"v123456"

#求出k1对应的值的字符串长度
127.0.0.1:6379> strlen k1  
(integer) 7

# INCR key	将 key 中储存的数字值增一。
127.0.0.1:6379> set k2 1
OK
127.0.0.1:6379> incr k2
(integer) 2
127.0.0.1:6379> incr k2
(integer) 3
127.0.0.1:6379> incr k2
(integer) 4

# DECR key	将 key 中储存的数字值减一。
127.0.0.1:6379> decr k2
(integer) 3
127.0.0.1:6379> decr k2
(integer) 2
127.0.0.1:6379> decr k2
(integer) 1

# INCRBY key increment	将 key 所储存的值加上给定的增量值(increment) 
127.0.0.1:6379> incrby k2 3
(integer) 1
127.0.0.1:6379> incrby k2 3
(integer) 4
127.0.0.1:6379> incrby k2 3
(integer) 7

# DECRBY key decrement	key 所储存的值减去给定的减量值(decrement)
127.0.0.1:6379> decrby k2 2
(integer) 5
127.0.0.1:6379> decrby k2 2
(integer) 3
127.0.0.1:6379> decrby k2 2
(integer) 1

# GETRANGE key start end  获取指定区间范围的值,返回 key 中字符串值的子字符
# 从0到-1表示全部
127.0.0.1:6379> get k1
"v123456"
127.0.0.1:6379> getrange k1 0 -1
"v123456"
127.0.0.1:6379> getrange k1 1 3
"123"

#SETRANGE key offset value	用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。
127.0.0.1:6379> get k1
"123456"
127.0.0.1:6379> setrange k1 2 abc
(integer) 6
127.0.0.1:6379> get k1
"12abc6"

# SETEX key seconds value	将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。
127.0.0.1:6379> setrange k1 2 abc
(integer) 6
127.0.0.1:6379> get k1
"12abc6"
127.0.0.1:6379> setex k4 10 v4
OK
127.0.0.1:6379> ttl k4
(integer) 4
127.0.0.1:6379> ttl k4
(integer) 2
127.0.0.1:6379> ttl k4
(integer) -2   // -2表示过期了

# SETNX key value   只有在 key 不存在库中时才会设置 key 的值
127.0.0.1:6379> get k1   // k1存在
"12abc6"
127.0.0.1:6379> setnx k1 v1  // setnx无法设置k1
(integer) 0
127.0.0.1:6379> get k1
"12abc6"
127.0.0.1:6379> get k5   // k5不存在
(nil)
127.0.0.1:6379> setnx k5 v5  // setnx可以设置k5
(integer) 1
127.0.0.1:6379> get k5
"v5"

# MSET key value [key value …]	同时设置一个或多个 key-value 对。
# MGET key1 [key2…]	获取所有(一个或多个)给定 key 的值。
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3
OK
127.0.0.1:6379> mget k1 k2 k3
1) "v1"
2) "v2"
3) "v3"

# MSETNX key value [key value …]	同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在才能设置成功。
127.0.0.1:6379> keys *   // k3已存在
1) "k3"
127.0.0.1:6379> msetnx k3 v3 k4 v4  // msetnx无法设置
(integer) 0
127.0.0.1:6379> get k4
(nil)
127.0.0.1:6379> msetnx k4 v5 k5 v5  //k4 k5 都不存在,msetnx生效
(integer) 1
127.0.0.1:6379> keys *
1) "k3"
2) "k5"
3) "k4"

List常用命令

  • 单值多value
# LANGE key start stop	获取列表指定范围内的元素,其中L代表的是 List
# LPUSH key value1 [value2]	将一个或多个值插入到列表头部,其中L表示Lift
# LPUSH类似于栈,先进后出,出栈和入栈都从栈顶
127.0.0.1:6379> lpush list01 1 2 3 4 5
(integer) 5
127.0.0.1:6379> lrange list01 0 -1  // 遍历得出 5 ~ 1
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"

# RPUSH key value1 [value2]	在列表中添加一个或多个值,其中R表示Right
# RPUSH类似于队列,先进先出,队尾入队,队头出队
127.0.0.1:6379> rpush list02 1 2 3 4 5
(integer) 5
127.0.0.1:6379> lrange list02 0 -1  // 遍历得出 1 ~ 5
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"

# LPOP key	移出并获取列表的第一个元素
127.0.0.1:6379> lpop list01   #栈顶出
"5"
127.0.0.1:6379> lpop list02   #队头出
"1"
127.0.0.1:6379> lrange list01 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
127.0.0.1:6379> lrange list02 0 -1
1) "2"
2) "3"
3) "4"
4) "5"

# RPOP key	移除列表的最后一个元素,返回值为移除的元素
127.0.0.1:6379> rpop list01  # 栈底出
"1"
127.0.0.1:6379> rpop list02  # 队尾出
"5"
127.0.0.1:6379> lrange list01 0 -1
1) "4"
2) "3"
3) "2"
127.0.0.1:6379> lrange list02 0 -1
1) "2"
2) "3"
3) "4"

# LINDEX key index	通过索引获取列表中的元素
127.0.0.1:6379> lrange list02 0 -1
1) "2"
2) "3"
3) "4"
127.0.0.1:6379> lindex list02 3
(nil)
127.0.0.1:6379> lindex list02 2
"4"

# LLEN key	获取列表长度
127.0.0.1:6379> llen list01
(integer) 3

# LREM key count value	移除列表元素
127.0.0.1:6379> rpush list03 1 2 3 3 3 4 5 6
(integer) 8
127.0.0.1:6379> lrange list03 0 -1
1) "1"
2) "2"
3) "3"
4) "3"
5) "3"
6) "4"
7) "5"
8) "6"
127.0.0.1:6379> lrem list03 2 3   # 在list03中删除2个值为3的元素
(integer) 2
127.0.0.1:6379> lrange list03 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"

# LTRIM key start stop	对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
127.0.0.1:6379> lpush list01 1 2 3 4 5 6 7 8
(integer) 8
127.0.0.1:6379> ltrim list01 0 4
OK
127.0.0.1:6379> lrange list01 0 -1
1) "8"
2) "7"
3) "6"
4) "5"
5) "4"

# RPOPLPUSH source destination	移除列表的最后一个元素,并将该元素添加到另一个列表并返回,记忆RPOP出栈,LPUSH压栈
# 示例一
127.0.0.1:6379> lpush list01 1 2 3
(integer) 3
127.0.0.1:6379> lpush list02 1 2 3
(integer) 3
127.0.0.1:6379> lrange list01 0 -1
1) "3"
2) "2"
3) "1"
127.0.0.1:6379> lrange list02 0 -1
1) "3"
2) "2"
3) "1"
127.0.0.1:6379> rpoplpush list01 list02
"1"
127.0.0.1:6379> lrange list01 0 -1
1) "3"
2) "2"
127.0.0.1:6379> lrange list02 0 -1
1) "1"
2) "3"
3) "2"
4) "1"
# 示例二
127.0.0.1:6379> rpush list03 1 2 3
(integer) 3
127.0.0.1:6379> rpush list04 1 2 3
(integer) 3
127.0.0.1:6379> lrange list03 0 -1
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> lrange list04 0 -1
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> rpoplpush list03 list04
"3"
127.0.0.1:6379> lrange list03 0 -1
1) "1"
2) "2"
127.0.0.1:6379> lrange list04 0 -1
1) "3"
2) "1"
3) "2"
4) "3"

在这里插入图片描述

# LSET key index value	通过索引设置列表元素的值
127.0.0.1:6379> lrange list01 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
127.0.0.1:6379> lset list01 1 x
OK
127.0.0.1:6379> lrange list01 0 -1
1) "5"
2) "x"
3) "3"
4) "2"
5) "1"

# LINSERT key BEFORE/AFTER pivot value	在列表的元素前或者后插入元素 
127.0.0.1:6379> linsert list01 before x java
(integer) 6
127.0.0.1:6379> linsert list01 after x oracle
(integer) 7
127.0.0.1:6379> lrange list01 0 -1
1) "5"
2) "java"
3) "x"
4) "oracle"
5) "3"
6) "2"
7) "1"

List 性能总结:

  • 它是一个字符串链表,left、right都可以插入添加;
  • 如果键不存在,创建新的链表;
  • 如果键已存在,新增内容;
  • 如果值全移除,对应的键也就消失了。
  • 链表的操作无论是头和尾效率都极高,但假如是对中间元素进行操作,效率就很惨淡了。

Set常用命令

  • 单值多value
  • 无序无重复,可用来去重
# SADD key member1 [member2]	向集合添加一个或多个成员,SADD 记忆为 set add
# SMEMBERS key	返回集合中的所有成员
127.0.0.1:6379> sadd set01 1 1 2 2 3 3
(integer) 3
127.0.0.1:6379> smembers set01
1) "1"
2) "2"
3) "3"

# SISMEMBER key member	判断 member 元素是否是集合 key 的成员
# SISMEMBER 可记忆为是 set is member的缩写
127.0.0.1:6379> smembers set01
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> sismember set01 1  #有则返回1
(integer) 1
127.0.0.1:6379> sismember set01 2
(integer) 1
127.0.0.1:6379> sismember set01 x #无则返回0
(integer) 0

# SCARD key	获取集合的成员数
127.0.0.1:6379> scard set01
(integer) 3 #集合中有3个元素

# SREM key member1 [member2]	移除集合中一个或多个成员
127.0.0.1:6379> smembers set01
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> srem set01 3
(integer) 1
127.0.0.1:6379> smembers set01
1) "1"
2) "2"

# SRANDMEMBER key [count]	返回集合中一个或多个随机数,相当于抽奖
# SRANDMEMBER 即 set rand member
127.0.0.1:6379> sadd set02 1 2 3 4 5
(integer) 5
127.0.0.1:6379> srandmember set02 3  #随机返回3个元素
1) "3"
2) "2"
3) "4"

# SPOP key	移除并返回集合中的一个随机元素
127.0.0.1:6379> smembers set02
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> spop set02
"1"
127.0.0.1:6379> spop set02
"3"
127.0.0.1:6379> smembers set02
1) "2"
2) "4"
3) "5"

# SMOVE source destination member	将 member 元素从 source 集合移动到 destination 集
127.0.0.1:6379> sadd set01 11 22 33
(integer) 3
127.0.0.1:6379> sadd set02 a b c
(integer) 3
127.0.0.1:6379> smembers set01
1) "11"
2) "22"
3) "33"
127.0.0.1:6379> smembers set02
1) "b"
2) "a"
3) "c"
127.0.0.1:6379> smove set01 set02 11 #将set01中的值11移动到set02
(integer) 1
127.0.0.1:6379> smembers set01
1) "22"
2) "33"
127.0.0.1:6379> smembers set02  #set是无序不重复的
1) "11"
2) "b"
3) "a"
4) "c"

# SDIFF  key1 [key2]	返回给定所有集合的差集
# 返回值在第一个set里面而不在后面的任何一个set里面
127.0.0.1:6379> sadd set01 1 2 3 4 5
(integer) 5
127.0.0.1:6379> sadd set02 1 2 3 a b
(integer) 5
127.0.0.1:6379> sdiff set01 set02
1) "4"
2) "5"
127.0.0.1:6379> sdiff set02 set01
1) "b"
2) "a"

# SINTER key1 [key2]	返回给定所有集合的交集
127.0.0.1:6379> sinter set01 set02
1) "1"
2) "2"
3) "3"

# SUNION key1 [key2]	返回所有给定集合的并集
127.0.0.1:6379> sunion set01 set02  #会去重
1) "b"
2) "5"
3) "3"
4) "a"
5) "2"
6) "1"
7) "4"

Hash常用命令

key-Value模式不变,但Value是一个键值对

# HSET key field value	将哈希表 key 中的字段 field 的值设为 value 
# HGET key field	获取存储在哈希表中指定字段的值
127.0.0.1:6379> hset user id 1  #key是user,但是value是 id 1
(integer) 1
127.0.0.1:6379> hget user id
"1"
127.0.0.1:6379> hset user name zhangsan
(integer) 1
127.0.0.1:6379> hget user name
"zhangsan"

# HMSET key field1 value1 [field2 value2 ]	同时将多个 field-value (域-值)对设置到哈希表 key 中
# HMGET key field1 [field2]	获取所有给定字段的值
# HMSET 即 hash more set;HMGET 即 hash more get
127.0.0.1:6379> hmset user id 1 name zhangsan age 20
OK
127.0.0.1:6379> hmget user id name age
1) "1"
2) "zhangsan"
3) "20

# HGETALL key	获取在哈希表中指定 key 的所有字段和值
127.0.0.1:6379> hgetall user
1) "id"
2) "1"
3) "name"
4) "zhangsan"
5) "age"
6) "20"

# HDEL key field1 [field2]	删除一个或多个哈希表字段
127.0.0.1:6379> hdel user name  # 将key为user对应的hash中的name字段删除
(integer) 1
127.0.0.1:6379> hgetall user
1) "id"
2) "1"
3) "age"
4) "20"

# HLEN key	获取哈希表中字段的数量
127.0.0.1:6379> hlen user
(integer) 2

# HEXISTS key field	查看哈希表 key 中,指定的字段是否存在
127.0.0.1:6379> hexists user id
(integer) 1 #有
127.0.0.1:6379> hexists user name
(integer) 0 #无

# HKEYS key	获取所有哈希表中的字段
# HVALS key	获取哈希表中所有值
127.0.0.1:6379> hkeys user
1) "id"
2) "age"
127.0.0.1:6379> hvals user
1) "1"
2) "20"

# HINCRBY key field increment	为哈希表 key 中的指定字段的整数值加上增量 increment 
127.0.0.1:6379> hmset user id 1 name zhangsan age 20
OK
127.0.0.1:6379> hget user age 
"20"
127.0.0.1:6379> hincrby user age 2
(integer) 22
127.0.0.1:6379> hincrby user age 2
(integer) 24

# HINCRBYFLOAT key field increment	为哈希表 key 中的指定字段的浮点数值加上增量 increment 
127.0.0.1:6379> hset user score 91.5
(integer) 1
127.0.0.1:6379> hget user score
"91.5"
127.0.0.1:6379> hincrbyfloat user score 0.5
"92"
127.0.0.1:6379> hget user score
"92

# HSETNX key field value	只有在字段 field 不存在时,设置哈希表字段的值。
127.0.0.1:6379> hsetnx user age 28
(integer) 0  #插入失败
127.0.0.1:6379> hsetnx user email abc@163.com
(integer) 1  #插入成功

Zset常用命令

  • 在set基础上,加一个score值。
  • 例如:set是 k1 v1 v2 v3,而 zset 是 k1 score1 v1 score2 v2
# ZADD key score1 member1 [score2 member2]	向有序集合添加一个或多个成员,或者更新已存在成员的分数
127.0.0.1:6379> zadd zset01 60 v1 70 v2 80 v3 100 v4
(integer) 4

# ZRANGE key start stop [WITHSCORES]	通过索引区间返回有序集合指定区间内的成员
127.0.0.1:6379> zrange zset01 0 -1 #输出只带有值
1) "v1"
2) "v2"
3) "v3"
4) "v4"

127.0.0.1:6379> zrange zset01 0 -1 withscores #输出只带有值和分数
1) "v1"
2) "60"
3) "v2"
4) "80"
5) "v3"
6) "100"

# ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]	通过分数返回有序集合指定区间内的成员
127.0.0.1:6379> zrangebyscore zset01 60 80  # [60,80]
1) "v1"
2) "v2"
127.0.0.1:6379> zrangebyscore zset01 60 (80 # [60,80)
1) "v1"
2) "v2"
127.0.0.1:6379> zrangebyscore zset01 (60 (80 # (60,80)
1) "v2"
# ZRANGEBYSCORE key min max [WITHSCORES] LIMIT
127.0.0.1:6379> zrangebyscore zset01 60 100
1) "v1"
2) "v2"
3) "v3"
4) "v4"
127.0.0.1:6379> zrangebyscore zset01 60 100 limit 0 2 # 加上LIMIT表示从zrangebyscore zset01 60 100的输出结果中,从0开始,截取2个元素
1) "v1"
2) "v2"

# ZREM key member [member …]	移除有序集合中的一个或多个成员
127.0.0.1:6379> zrange zset01 0 -1
1) "v1"
2) "v2"
3) "v3"
4) "v4"
127.0.0.1:6379> zrem zset01 v4
(integer) 1
127.0.0.1:6379> zrange zset01 0 -1
1) "v1"
2) "v2"
3) "v3"

# ZCARD key	获取有序集合的成员数
127.0.0.1:6379> zcard zset01
(integer) 3

# ZCOUNT key min max	计算在有序集合中指定区间分数的成员数
127.0.0.1:6379> zrange zset01 0 -1 withscores
1) "v1"
2) "60"
3) "v2"
4) "70"
5) "v3"
6) "80"
127.0.0.1:6379> zcount zset01 60 70 #统计60~80分之间的个数
(integer) 2

# ZRANK key member	返回有序集合中指定成员的索引
127.0.0.1:6379> zrange zset01 0 -1 
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> zrank zset01 v3 #拿到v3的下标
(integer) 2

# ZSCORE key member	返回有序集中,成员的分数值
127.0.0.1:6379> zscore zset01 v3
"80"

# ZREVRANK key member	返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
127.0.0.1:6379> zrange zset01 0 -1 withscores
1) "v1"
2) "60"
3) "v2"
4) "70"
5) "v3"
6) "80"
127.0.0.1:6379> zrevrank zset01 v3
(integer) 0
127.0.0.1:6379> zrevrank zset01 v1
(integer) 2

# ZREVRANGE key start stop [WITHSCORES]	返回有序集中指定区间内的成员,通过索引,分数从高到低
127.0.0.1:6379> zrange zset01 0 -1 withscores
1) "v1"
2) "60"
3) "v2"
4) "70"
5) "v3"
6) "80"
127.0.0.1:6379> zrevrange zset01 0 -1 withscores
1) "v3"
2) "80"
3) "v2"
4) "70"
5) "v1"
6) "60"

# ZREVRANGEBYSCORE key max min [WITHSCORES]	返回有序集中指定分数区间内的成员,分数从高到低排序
127.0.0.1:6379> zrangebyscore zset01 60 70 
1) "v1"
2) "v2"

本博客未经授权禁止转载

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值