完整的redis命令大全

这篇文章详细介绍redis中不同数据类型的命令及其用法,通用的命令将归纳到string类型中。

注意:文章中涉及的下标index、start、end等都是是从0开始的。

学习redis,建议安装redis和redis的可视化工具Another Redis Desktop Manager,使用起来非常简单。

下载redis及其可视化工具https://pan.baidu.com/s/1nSl3IlZq80O1km_v2qGsFQ?pwd=3f9s

一、string类型命令

get

用法:get key

功能:获取key的值

示例:获取redis中key为name的值

get name

mget

用法:mget key1 key2 ...

功能:获取多个key的值

示例:获取redis中key分别为name、age、phone的值

 mget name age phone

set

用法:set key value

功能:设置key的值

示例:设置name的值

set name heyunlin

 mset

用法:mset key1 vaue1 key2 value2 ...

功能:设置多个key的值

示例:设置name、age的值

 mset name tom age 18

setnx

用法:setnx key value

功能:和set命令的用法一样,只有当key不存在时才设置,SETNX表示的是"SET if Not eXists"

msetnx

用法:msetnx key1 value1 key2 value2 ... ...

功能:和mset命令的用法一样,只有当key不存在时才设置,一次设置多个key的值

setex

用法:setex key seconds value

功能:作用相当于set+expire命名,设置key的值的同时设置过期时间

getset

用法:getset key vaue

功能:设置并获取key的值

del

用法:del key...

功能:删除key,del命令后面可以跟1个或多个key

示例:删除多个key(name、age和gender)

del name age gender

keys

用法:keys pattern

功能:根据正则查找key

        keys *:返回所有key

        keys a*:返回字母a开头的key

randomkey

用法:randomkey

功能:返回当前数据库中随机的一个key(默认DB0,可以通过select命令切换数据库)

rename

用法:rename key newKey

功能:对key重命名

 示例:重命名gender为sex

rename gender sex

renamenx

用法:rename key newKey

功能:对key重命名,只有当newKey不存在时,如果newKey已经存在,则不会做任何操作

expire

用法:expire key seconds

功能:设置key的过期时间,单位:秒(设置相对时间)

 示例:设置gender过期时间为1分钟

set gender 0

expire gender 60

expireat

用法:expireat key timestamp

功能:设置key的过期时间,timestamp表示一个unix时间戳。

 java中获取当前时间的时间戳的方法

/**
 * @author heyunlin
 * @version 1.0
 */
public class SystemExample {

    public static void main(String[] args) {
        long timestamp = System.currentTimeMillis();

        System.out.println(timestamp);
    }

}

 示例:设置name的有效时间为7天,也就是60*60*24*7=604800秒,通过以上的代码获取当前的时间戳,然后加上604800(假设获取到当前的时间为:1689433078591)

set name heyunlin

expireat name 1689433078711

persist

用法:persist key

功能:删除key的过期时间,使其永不过期。

示例:设置name的有效时间为120秒,然后删除其过期时间

set name heyunlin

expire name 120

persist name

ttl name # 结果:-1,永不过期

ttl

用法:ttl key

功能:获取key的有效时间,单位:秒

        如果key没有设置过期时间,返回-1;

        如果key已过期或不存在,返回-2;

        设置了key的过期时间,且key没有过期,返回过期时间,单位/秒;

 示例:设置并获取gender的过期时间

set gender 0

expire gender 60

ttl gender # 60或者59,根据个人的手速获取的值不一样

incr

用法:incr key

功能:key的值自增1

  示例:对年龄自增1

set age 17

incr age

get age # 结果:18

increby

用法:increby key increment

功能:key的值自增指定的值

 示例:对年龄增加2

set age 16

incrby age 2

get age # 结果:18

incrbyfloat

用法:incrbyfloat key floatIncrement

功能:key的值自增指定小数,用法和increby类似

decr

用法:decr key

功能:key的值自减1,用法和incr类似

decrby

用法:decrby key decrement

功能:key的值自减指定的值,用法和incrby类似

type

用法:type key

功能:获取key的类型,可能的返回值有none、string、list、hash,当key不存在时返回none

exists

用法:exists key...

功能:判断key是否存在,exist命令后面可以跟1个或多个key

strlen

用法:strlen key

功能:获取key的值的长度

示例:获取名字的长度

set name heyunlin

strlen name # 结果:8

echo

用法:echo message

功能:输出信息

substr

用法:substr key start end

功能:截取指定key从下标start到end的值

示例:截取名字的前4个字母

set name heyunlin


substr name 0 3 # 结果:heyu

append

用法:append key value

功能:往指定key的值后面追加值

示例:hello后面追加world

set message hello

append message world # 往message的值后面追加字符串world

get message # 结果:helloworld

move

用法:move key dbIndex

功能:移动key到指定的数据库,dbIndex的范围为[0, 15]

示例:移动name到db1

set name heyunlin

move name 1

select

用法:select dbIndex

功能:切换到第dbIndex+1个数据库

示例:切换到DB9

select 9

flushdb

用法:flushdb index

功能:清空当前数据库的数据

        redis默认下标为0-15个数据库,默认为0,flushdb会删除当前为0的数据库

flushall

用法:flushall

功能:删除所有数据库(DB0~DB15)。

二、list类型命令

lpush

用法:lpush key value...

功能:在链表到的左边插值

rpush

用法:rpush key value...

功能:在链表的右边插值

lpop

用法:lpop key

功能:从链表的左边取值

rpop 

用法:rpop key

功能:在链表的右边取值

 

rpoplpush

用法:rpoplpush srckey deskey

功能:从srckey的右边取出一个值,放到deskey中

 

llen

用法:llen key

功能:获取链表总长度

lrange

用法:lrange key start end

功能:获取链表指定范围的值

ltrim

用法:ltrim key start end

功能:删除[start, end]以外的值

示例:现在我们有一个list

现在只需要保留最后面4个a,其他全删除。

因为index从0开始,第一个a的index为5,同理最后一个a的index为8

ltrim 5 8

执行以上命令之后,list只剩下了4个a

lset

用法:lset key index value

功能:设置链表指定位置的值

lindex

用法:lindex key index

功能:获取链表指定位置的值

lrem

用法:lrem key count value

功能:从链表中删除count个值为value的元素

三、hash类型命令

hash类型用来保存对象,只能把对象分为多个字段保存,假设有一个User类

public class User {
    String name = "Tom";

    Integer age = Integer.MAX_VALUE;

    Integer gender = 0;
}

hset

用法:hset key field value

功能:设置key指定字段的值

示例:使用hset保存user对象的全部字段值

hset user name Tom

hset user age 2147483647

hset user gender 0

 hmset

用法:hmset key1 field1 key2 field2 ... ...

功能:批量设置key的字段值;

示例:批量设置用户信息

hmset user name Tom age 2147483647 gender 0

hsetnx

用法:hsetnx key field value

功能:设置key指定字段的值当且仅当字段field不存在

hget

用法:hget key field

功能:获取key指定字段的值

示例:获取用户名

hget user name

hmget

用法:hmget key field...

功能:批量获取key的字段值

示例:批量获取用户信息  

hmget user name age gender

hincrby

用法:hincrby key field

功能:让key的字段值自增1

示例:设置年龄+1

hset user age 17

hincrby user age # 结果:18

hincrbyfloat 

用法:hincrbyfloat key field

功能:让key的字段值自增指定小数

hexists

用法:hexists key field

功能:判断key的字段是否存在;

示例:判断用户的名字字段是否存在

hexists user name

hdel 

用法:hdel key field...

功能:删除key的字段,可以一次删除多个字段

 示例:删除用户的名字字段

hdel user name gender

hlen

用法:hlen key

功能:获取key的总字段数

  示例:删除用户的字段数

hmset user name Tom age 2147483647 gender 0

hlen user # 结果:3

hkeys

用法:hkeys key

功能:获取key的所有字段

hvals

用法:hvals key

功能:获取key所有字段的值

 

hgetall

用法:hgetall key

功能:获取key所有字段和值

四、set类型命令

sadd

用法:sadd key member...

功能:往集合里添加多个元素,可以一次添加多个

smembers

用法:smembers key

功能:获取集合所有的元素

srem

用法:srem key member...

功能:从集合中删除指定的元素,可以一次删除多个

spop

用法:spop key

功能:从集合中删除一个元素(随机删除,因为集合无序)

smove

用法:smove srcKey desKey member

功能:把集合srcKey的member元素移动到目标集合desKey

scard

用法:scard key

功能:获取集合中元素的个数

sismember

用法: sismember key member

功能:判断member在不在集合key中

以下命令用于对集合取交集、并集、差集。

注意:

- 使用xxxstore命令时,如果目标集合已经存在,则不会保存;

- 如果目标集合不存在,则新建集合,并保存数据。

sinter 

用法: sinter key...

功能:获取多个集合的交集

sinterstore

用法: sinterstore destKey key...

功能:获取多个集合的交集,并保存到目标集合destKey中,如果目标集合已经存在,则不会保存;

sunion

用法: sunion key...

功能:获取多个集合的并集

sunionstore

用法: sunionstore destKey key...

功能:获取多个元素的并集,并保存到目标集合destKey中,如果目标集合已经存在,则不会保存;

sdiff

用法: sdiff key...

功能:获取多个集合的差集

sdiffstore

用法: sdiffstore destKey key...

功能:获取多个元素的差集,并保存到目标集合destKey中,如果目标集合已经存在,则不会保存;

 

srandmember

用法: srandmember key [count]

功能:随机获取集合中的1个[或count个]元素

 

五、sorted set类型命令

zadd

用法:zadd score key...

功能:添加多条数据到有序集合中

示例:往集合userlist里添加3条数据,分别指定分数为1、2、3

zadd userlist 1 tom 2 marry 3 lisa

 zrem

用法:zrem key member...

功能:删除集合中指定的一个或多个元素

示例:删除了userlist中的tom和marry,然后userlist中只剩下lisa了

zadd userlist 1 tom 2 marry 3 lisa

zrem userlist tom marry

 

 zrank

用法:zrank key member

功能:获取集合指定元素的升序排行,从0开始

示例:获取排名

zadd userlist 1 tom 2 marry 3 lisa 4 john

zrank userlist john // 3
zrank userlist marry // 1

 zincrby

用法:zincrby key score member

功能:给集合中的元素member增加指定的分数,如果集合不存在,会创建该集合并设置分数为指定的score;

示例:在集合userlist中创建了一个分数为4的john

zincrby userlist 4 john

 

 zrank

用法:zrank key member

功能:获取集合指定元素的升序排行,从0开始

示例:获取排名

zadd userlist 1 tom 2 marry 3 lisa 4 john

zrank userlist john // 3
zrank userlist marry // 1

 

 zrevrank

用法:zrevrank key member:

功能:获取集合指定元素的降序排行;(这里是按照分数降序排序)

 示例:获取倒数的排名

zadd userlist 1 tom 2 marry 3 lisa 4 john

zrank userlist john // 0
zrank userlist marry // 2

 

zrange

用法:zrange key start end [withscores]

功能:获取集合中指定范围的元素,如果加上withscores,则也会显示分数

 示例:获取userlist中前两个元素tom、marry

zadd userlist 1 tom 2 marry 3 lisa

zrange userlist 0 1

zrevrange

用法:zrevrange key start end [withscores]

功能:获取集合中指定范围的元素(从最后一个元素开始),如果加上withscores,则也会显示分数;(这里是按照分数降序排序)

示例:获取userlist中最后两个元素lisa、marry 

zadd userlist 1 tom 2 marry 3 lisa

zrevrange userlist 0 1 withscores

zrangebyscore

用法:zrangebyscore key min max [withscores] [limit offset count]

功能:获取集合中指定范围的元素(从最后一个元素开始),如果加上withscores,则也会显示分数;

示例:获取userlist中分数为1~4的元素,并限制返回的数据

zadd userlist 1 tom 2 marry 3 lisa 4 john


# 获取集合userlist中分数1~4的全部元素:1 tom 2 marry 3 lisa 4 john
zrangebyscore userlist 1 4 withscores

# 获取集合userlist中分数1~4的前三个元素:1 tom 2 marry 3 lisa
zrangebyscore userlist 1 4 withscores limit 0 3

# 获取集合userlist中分数1~4的后两个元素:3 lisa 4 john
zrangebyscore userlist 1 4 withscores limit 2 2

 zrevrangebyscore

用法:zrevrangebyscore key min max [withscores] [limit offset count]

功能:获取集合中指定范围的元素,如果加上withscores,则也会显示分数;(这里是按照分数降序排序)

zcard

用法:zcard key

功能:获取集合中元素个数

示例:在集合userlist中元素个数,结果为3

zadd userlist 1 tom 2 marry 3 lisa

zcard userlist

zscore

用法:zscore key member

功能:获取元素的分数

示例:获取tom的分数

zadd userlist 1 tom 2 marry 3 lisa 4 john

zscore userlist tom // 1

zsort

用法:zsort key

功能:

zwatch

用法:zwatch key

功能:

zcount

用法:zcount key min max

功能:获取集合中分数在指定范围内的元素个数

示例:获取分数在1~2、1~3、1~4的元素个数

zadd userlist 1 tom 2 marry 3 lisa 4 john

zcount userlist 1 2 // 2
zcount userlist 1 3 // 3
zcount userlist 1 4 // 4

六、bitmap类型命令

getbit

用法:getbit key offset

功能:获取key在指定偏移量的值

setbit

用法:setbit key offset value

功能:设置key在指定偏移量的值

bitcount

用法:bitcount key [start end]

功能:获取key[指定下标范围]中值为1的个数

setrange

用法:setrange key offset value

功能:和setbit命令作用一样,但是用的是16进制表示

getrange

用法:getrange key start end

功能:获取指定范围的值

示例:获取一个bitmap前4位的值

特别说明:16进制用0-9、a~f表示,a~f分别表示10~15

bitmap前四位的二进制为11010000,1101转为16进制为8+4+1=13,也就是字母d,所以这里结果为\xd0(\x表示是16进制)。

setbit bitmap 0 1
setbit bitmap 1 1
setbit bitmap 2 0
setbit bitmap 3 1
setbit bitmap 4 0
setbit bitmap 5 0
setbit bitmap 6 0
setbit bitmap 7 0

getrange bitmap 0 3 # 结果:\xd0

bitop

bitop operation destKey key...

对多个key进行位运算,与/或/非/异或。operation的可选值有:AND、OR、XOR、NOT

示例:我们创建两个位图sign:20230707和sign:20230708。

设置sign:20230707为11111000

setbit sign:20230707 0 1
setbit sign:20230707 1 1
setbit sign:20230707 2 1
setbit sign:20230707 3 1
setbit sign:20230707 4 1

设置sign:20230708为00000111

setbit sign:20230708 5 1
setbit sign:20230708 6 1
setbit sign:20230708 7 1

然后对两个bitmap进行位运算。为了区分结果的名字,我们使用operation + ResultMap作为目标key。

与运算

bitop and andResultMap sign:20230707 sign:20230708

或运算:

bitop or orResultMap sign:20230707 sign:20230708

 非运算:非运算(取反运算)是单目操作符,所以只能对一个key操作。

bitop not notResultMap sign:20230707

 异或运算:

bitop xor xorResultMap sign:20230707 sign:20230708

可以大胆地对几个结果key进行猜测,学习过java位运算的都知道,上面几个key的值应该为:

andResultMap:00000000

orResultMap:11111111

notResultMap:00000111

xorResultMap:11111111

我们复制上面创建bitmap的命令执行一遍,执行完之后

sign:20230707

sign:20230708

接下来执行四个位运算的命令。最后得到的结果的结果:

andResultMap:00000000

orResultMap:11111111

notResultMap:00000111

xorResultMap:11111111

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值