Redis命令详解

目录

目标

数据结构

命令手册

通用命令

String命令

Hash命令

List命令

Set命令

Zset命令


目标

  1. 熟练使用Redis常用命令,熟悉五种数据类型(String、Hash、List、Set、Zset)的结构并掌握增删改查操作。本文以Redis3.2.100版本做演示。

数据结构

Redis以键值对的方式存储数据,其中,值有5种数据类型:

  1. String:值为字符串。
  2. Hash:值为多组映射,相当于JAVA中的Map。适合存储对象数据类型。
  3. List:一个列表最多可以包含 2^{32}-1 个元素,列表元素有序可重复,相当于JAVA中的List。
  4. Set:一个集合最多 2^{32}-1 个元素,集合元素无序不可重复,相当于JAVA中的Set。
  5. Zset:一个有序集合最多 2^{32}-1 个元素,集合元素有序不可重复,每个元素都会关联一个double类型的分数。元素根据分数从小到大的排序,分数可以重复


命令手册

通用命令

#查看name键是否存在,注意:返回1表示存在;返回0表示不存在。
exists name
#删除name键,注意:返回1表示删除成功;返回0表示该键不存在。
del name
#查看name键的过期时间,单位:秒。注意:返回-1表示永不过期;返回-2表示已经过期或根本不存在该键。
ttl name
#设置name键的过期时间为10秒,注意:name键已经存在。
expire name 10
#设置name键的过期时间为20000豪秒,注意:name键已经存在。
pexpire name 20000
#设置name键的过期截至时间为2021-01-20 15:30:06,注意:该命令的时间是时间戳(毫秒)形式,且name键已经存在。
pexpireat name 1611127806832
#设置name键永不过期,即移除过期时间。
persist name
#查看name键的数据类型
type name
#修改name键为studentName
rename name studentName

String命令

#查看name键对应的值。
get name
#设置name="zhangsan",注意:如果没有name键,则新增数据,反之修改数据。
set name zhangsan
#设置name2="zhangsan2",注意:name键不存在才设置成功。
setnx name2 zhangsan2
set name2 zhangsan2 nx
#设置name2="zhangsan2",注意:name键存在才设置成功。
set name2 zhangsan2 xx
#设置name="zhangsan",且过期时间为10秒。
set name zhangsan ex 10
setex name 10 zhangsan
#设置name="zhangsan",且过期时间为20000毫秒。
set name zhangsan px 20000
#设置name键的值为lisi,并返回原来的值。
getset name lisi
#设置name、name2、name3多个键的值,注意:如果这些键有任意一个存在,则都设置失败。
mget name aa name2 bb name3 cc
#查询name、name2、name3多个键的值
mget name name2 name3
#设置age键数值增加1。
incr age
#设置age键数值减少1。
decr age
#设置age键数值增加10。
incrby age 10
#设置age键数值减少10。
decrby age 10
#设置weight键数值增加3.14浮点数
incrbyfloat weight 3.14
#设置weight键数值减少0.618浮点数
decrbyfloat weight 0.618
#设置name键的值追加lisi,注意:name键必须存在。
append name lisi

Hash命令

#设置site键的值为:baidu www.baidu.com ,注意:没有site键,则新增数据,反之修改数据。
hset site baidu www.baidu.com
#设置site键的值为:baidu www.baidu.com,注意:不存在site键或者不存在site键中的baidu属性,才能设置成功。
hsetnx site baidu www.baidu.com
#设置site键的值为:baidu www.baidu.com qq www.qq.com wanwang www.wanwang.com ,注意:该命令会覆盖原来的数据。
hmset site baidu www.baidu.com qq www.qq.com wanwang www.wanwang.com
#查询site键的所有键值对。
hgetall site
#查询site键的所有属性名。
hkeys site
#查询site键的所有属性值。
hvals site
#查询site键的qq、baidu属性。
hmget site qq baidu
#查看site键的baidu字段的值。
hget site baidu
#查看site键是否存在baidu字段。
hexists site baidu
#查看site键属性的数量。
hlen site
#查询site键baidu属性的值得长度。
hstrlen site baidu
#设置student键age属性增加10。注意:如果age属性不存在或者student键不存在,则设置age=10。
hincrby student age 10
#设置student键weight属性增加3.14。注意:如果weight属性不存在或者student键不存在,则设置weight=3.14。
hincrbyfloat student weight 3.14
#删除site键中的某些键值对,返回删除数量。
hdel site baidu qq

List命令

#查询book键的长度。
llen book
#查询book键的前3个元素。
lrange book 0 2
#查询book键的所有元素。
lrange book 0 -1
#设置book键的元素为:mysql、java、lua 。
lpush book lua java mysql
#往book键追加元素c++并将该元素放在表头。
lpush book c++
#往book键追加元素html并将该元素放在表头。注意:如果book键不存在,则什么都不做返回0。如果存在,则追加元素并返回元素个数。
lpushx book html
#设置movies键的元素为: IranMan、CaptainAmerica。
rpush movies IranMan CaptainAmerica
#往movies键追加元素Panther并将该元素放在表尾。
rpush movies Panther
#往movies键追加元素Deadpool并将该元素放在表尾。注意:如果movies键不存在,则什么都不做返回0。如果存在,则追加元素并返回元素个数。
rpushx movies Deadpool
#movies键移除并返回头部元素。
lpop movies
#移除并返回尾部元素。
rpop movies
#将book的尾部元素移动到book2的头部元素,并返回该元素。
rpoplpush book book2
#移除stuList键中名字为tom的所有元素。
lrem stuList 0 tom
#移除stuList键中名字为mark的1个元素,从头到尾搜索。
lrem stuList 1 mark
#移除stuList键中名字为lisi的2个元素,从尾到头搜索。
lrem stuList -2 lisi
#查询stuList的第1个元素
lindex stuList 0
#查询stuList的倒数第2个元素
lindex stuList -2
#将zhangsan插入到stuList键中,且zhangsan位于lisi之后。注意:成功后返回列表大小,没有lisi返回-1,没有stuList键返回0。
linsert stuList after lisi zhangsan
#将zhangsan插入到stuList键中,且zhangsan位于lisi之前。注意:成功后返回列表大小,没有lisi返回-1,没有stuList键返回0。
linsert stuList before lisi zhangsan
#将stuList键下标为1的元素设置为wangwu
lset stuList 1 wangwu
#将stuList键下标为-1的元素设置为liqi。
lset stuList -1 liqi
#保留stuList键的前3个元素,其他元素删除。
ltrim stuList 0 2
###################################blpop命令详解###################################
#语法:blpop key key2 key3 ………… 超时时间(单位:秒)
#功能1:
    #当超时时间为0表示一直阻塞。该命令会从左开始遍历列表,直到发现非空列表后才停止,
    #返回一个列表,该列表的第一个值是列表名称,第二个值是该列表的头元素,此时该列表会删除头元素。
#
#有三个列表分别是:book={a,b,c,d,e,f};book2={1,2,3,4,5,6};book3={aa,bb,cc,dd,ee,ff}
#执行以下命令,返回一个列表,第一个值是book,第二个值是a,此时的book会删除第一个元素。
blpop book book2 book3

#备注:
    #brpop与blpop除了弹出的元素为尾部元素外,其他功能一样。

Set命令

#查询order集合元素个数。
scard order
#查询order集合中的所有元素。
smembers order
#向order集合添加一个或多个元素。
sadd order 001 002 003 004 005 006 007
#移除order集合一个或多个元素。
srem order 001 002
#判断001元素是否在order集合中。注意:存在返回1;不存在001元素或不存在order集合则返回0。
sismember order 001
#随机移除order集合中的1个元素。
spop order
#随机查询order集合中的1个元素。
srandmember order
#随机查询order集合中的2个元素。注意:如果后面的数字>=集合大小,则返回集合所有元素。如果是负数,则返回一个数组,且数组的元素个数为这个数的绝对值,且元素可以重复。
srandmember order 2
#将order2集合中的009移动到order集合中。注意:该命令是原子操作,成功返回1,失败返回0。如果这两个集合都有009,则order2也会剔除009,并返回1。
smove order2 order 009
#查询多个集合的交集,即返回多个集合中的相同元素。比如查询order和order2的交集。
sinter order order2
#查询order和order2集合的交集,并将交集存储到order3。注意:如果不存在集合order3则创建并添加元素,如果存在order3,则交集覆盖order3的所有元素。
sinterstore order3 order order2
#查询多个集合的并集,即相当于查询多个集合中的所有元素并去重。如查询order和order2的并集。
sunion order order2
#查询order和order2集合的并集,并将并集存储到order3。注意:如果不存在集合order3则创建并添加元素,如果存在order3,则并集覆盖order3的所有元素。
sunionstore order3 order order2
#查询order和order2集合的差集。即查询各个集合中互不存在的元素。
sdiff order order2
#查询order和order2集合的差集,并将并集存储到order3。注意:如果不存在集合order3则创建并添加元素,如果存在order3,则差集覆盖order3的所有元素。
sdiffstore order3 order order2

Zset命令

#查询moviesTop集合中元素的个数。
zcard moviesTop
#升序查询moviesTop集合中的所有值。注意:降序查询用zrevrange。
zrange moviesTop 0 -1
zrangebyscore moviesTop -inf +inf
#升序查询moviesTop集合中下标为0到2的值。注意:降序查询用zrevrange。
zrange moviesTop 0 2
#升序查询moviesTop集合中的所有值和分数。注意:降序查询用zrevrange。
zrange moviesTop 0 -1 withscores
zrangebyscore moviesTop -inf +inf withscores
#升序查询moviesTop集合中下标为0到2的值和分数。注意:降序查询用zrevrange。
zrange moviesTop 0 2 withscores
#向moviesTop添加元素。
zadd moviesTop 3 IronMan 7 Panther 4 Avengers
#查询moviesTop集合中IronMan元素的分数。
zscore moviesTop IronMan
#给moviesTop集合中IronMan元素的分数一个增量(可以是负增量)。注意:如果该集合没有该元素,则会创建该数据。
zincrby moviesTop 10 IronMan
#查询moviesTop集合中分数在[30,10]的元素。
zcount moviesTop 10 30
#查询moviesTop集合中分数<=7的元素。
zrangebyscore moviesTop -inf 7 withscores
#查询moviesTop集合中分数>=7的元素。
zrangebyscore moviesTop 7 +inf withscores
#查询moviesTop集合中分数[13,7)的元素。
zrangebyscore moviesTop (7 13 withscores
#查询moviesTop集合中分数[13,7]的元素。
zrangebyscore moviesTop 7 13 withscores
#查询moviesTop集合中分数(13,7]的元素。
zrangebyscore moviesTop 7 (13 withscores
#查询moviesTop集合中分数(1,13)的元素,返回2个元素。
zrangebyscore moviesTop (1 (13 withscores limit 0 2
#按从小到大的顺序查询moviesTop集合中IronMan元素的排名。注意:排名第一的元素返回0。
zrank moviesTop IronMan
#按从大到小的顺序查询moviesTop集合中IronMan元素的排名。注意:排名第一的元素返回0。
zrevrank moviesTop IronMan
#移除moviesTop集合中的IronMan和元素。注意:返回值为移除元素的个数。
zrem moviesTop IronMan Panther
#移除moviesTop集合中下标在[2,0]之间的元素。注意:返回值为移除元素的个数。
zremrangebyrank moviesTop 0 2
#移除moviesTop集合中分数在[4,3]之间的元素。注意:返回值为移除元素的个数。
zremrangebyscore moviesTop 3 4
#移除moviesTop集合中分数在(4,3]之间的元素。注意:返回值为移除元素的个数。
zremrangebyscore moviesTop 3 (4
#移除moviesTop集合中分数在(4,3)之间的元素。注意:返回值为移除元素的个数。
zremrangebyscore moviesTop (3 (4
#查询moviesTop集合和moviesTop2集合的并集,并将结果保存到moviesTop3中返回元素个数。注意:需要用数字表示一共有多少个集合;如果moviesTop3存在则会覆盖;相同的元素的分数默认相加。
zunionstore moviesTop3 2 moviesTop moviesTop2
#查询moviesTop集合和moviesTop2集合的交集,并将结果保存到moviesTop3中返回元素个数。注意:需要用数字表示一共有多少个集合;如果moviesTop3存在则会覆盖;相同的元素的分数默认相加。
zinterstore moviesTop3 2 moviesTop moviesTop2

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值