Redis的常用命令

Posted *King*

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis的常用命令相关的知识,希望对你有一定的参考价值。

一、Redis的全局命令操作

1、查看所有键

keys *
-- 也可以模糊搜索查询,但一般不推存
keys s*

2、查看键总数

dbsize

3、检查键是否存在

exists key

4、删除键,返回删除的条数

del key

5、键过期

返回剩余的过期时间:-1表示没有设置过期,-2表示已过期,正数表示还剩余的过期时间(秒)

expire key seconds
-- 设置时间戳以后过期
expireat key 时间戳
-- 查看还剩多久过期
ttl key

6、查看键的数据结构类型

type key

7、键重命名

如果newkey存在,则会强制覆盖

rename oldkey newkey

二、Redis常用的五种数据结构操作

字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(ZSET)

字符串(String)

1、设置值

set key value
-- key必须不存在,才能设置成功,用于添加
setnx key value
-- key必须存在,才能设置成功,用于更新
set key value xx
--批量设置
mset key1 value1 key2 value2
例:
set age 23 ex 10
setnx name test
set age 25 xx

set命令有几个选项:

  • ex seconds:为键设置秒级过期时间。

  • px milliseconds:为键设置毫秒级过期时间。

  • nx:键必须不存在,才可以设置成功,用于添加。

  • xx:与nx相反,键必须存在,才可以设置成功,用于更新。

set key value ex seconds

2、获取值

get key
--批量获取
mget key1 key2
例:
批量设值:mset country china city beijing
批量获取:mget country city address

3、lncr数字运算

lncr命令用于对值做自增操作,返回结果分为三种情况:

  • 值不是整数,返回错误
  • 值是整数,返回自增后的结果
  • 键不存在,按照值为0自增,返回结果为1
-- 自增
incr key
-- 自减
decr key
-- 自增指定数字
incrby 数字 key
-- 自减指定数字
decrby 数字 key
-- 自增浮点数
incrbyfloat 数字 key
例:
incr age       //必须为整数自加1,非整数返回错误,无age键从0自增返回1
decr age      //整数age减1
incrby age 2 //整数age+2
decrby age 2//整数age -2
incrbyfloat score 1.1 //浮点型score+1.1

4、append追加指令

append key 追加的字符串
例:
set name hello
append name world //追加后成helloworld

5、strlen字符串长度,返回字符串长度

strlen key
例:
 set hello “世界”
 strlen hello

6、getset设置并返回原值

getset和set一样会设置值,但是不同的是,它同时会返回键原来的值

getset key value

7、setrange设置指定位置的字符,下标从0开始计算

setrange key 下标 设置的值

8、getrange截取字符串

getrange截取字符串中的一部分,形成一个子串,需要指明开始和结束的偏移量,截取的范围 是个闭区间

getrange key 开始下标  结束下标
例:
 set name helloworld ; getrange name 2 4//返回 llo

哈希(Hash)

idnameage
1xiaoming18
-- 用String设置值(命令空间防止键名冲突:业务名:对象名:id:属性)
set user:1:name xiaoming
set user:1:age 18
-- 用Hash设置值
hmset user:1 name xiaoming age 18

哈希是一个string类型的field和value的映射表,hash特适合用于存储对象

 命令  hset key field value
   设值:hset user:1 name xiaoming
   取值:hget user:1 name
   删值:hdel user:1 age
   计算个数:hset user:1 name xiaoming; hset user:1 age 23; 
              hlen user:1
   批量设值:hmset user:2 name xiaoming age 23 sex boy
   批量取值:hmget user:2 name age sex
   判断field是否存在:hexists user:2 name
   获取所有field: hkeys user:2
   获取user:2所有value:hvals user:2
   获取user:2所有field与value:hgetall user:2
   增加1:hincrby user:2 age 1
   hincrbyfloat user:2 age 2

列表(List)

列表( list)类型是用来存储多个有序的字符串,a、b、c、d、e五个元素从左到右组成了一个有序的列表,列表中的每个字符串称为元素(element),一个列表最多可以存储2-1个元素。在Redis 中,可以对列表两端插入( push)和弹出(pop),还可以获取指定范围的元素列表、获取指定索引下标的元素等。

1、lrange获取指定范围内的元素列表

索引下标特点:从左到右为0到N-1

lrange 0 -1  命令可以从左到右获取列表的所有元素
rpush 从右向左插入
lpush 从左向右插入
linsert 在某个元素前或后插入新元素
lpop 从列表左侧弹出
rpop 从列表右侧弹出 

2、lrem 对指定元素进行删除

lrem命令会从列表中找到等于value的元素进行删除,根据count的不同分为三种情况:

  • count>0,从左到右,删除最多count个元素。
  • count<0,从右到左,删除最多count绝对值个元素。
  • count=0,删除所有。

lrem enjoylist 4 x

3、ltirm 按照索引范围修剪列表

例如想保留列表中第0个到第1个元素

ltrim enjoylist 0 1

4、lset修改指定索引下标的元素

lset enjoylist 1 web

5、lindex 获取列表指定索引下标的元素

lindex enjoylist 1

6、llen获取列表长度

llen enjoylist

集合(Set)

集合( set)类型也是用来保存多个的字符串元素,但和列表类型不一样的是,
集合中不允许有重复元素,并且集合中的元素是无序的,不能通过索引下标获取元 素。

1、sadd添加元素

允许添加多个,返回结果为添加成功的元素个数

sadd key member

2、srem删除元素

允许删除多个,返回结果为成功删除的元素个数

srem key member

3、scard计算元素个数

scard key

4、sismember判断元素是否在集合中

如果给定元素element在集合内返回1,否则返回0

sismember key member

5、srandmember随机从集合返回 指定个数元素

指定个数如果不写默认为1

srandmember key count

6、spop从集合随机弹出元素

可以指定个数,如果不写默认为1。spop命令执行后,元素会从集合中删除,而srandmember命令不会删除元素

spop key count

7、smembers获取所有元素

返回的结果是无序的

smembers key

8、sinter求多个集合的交集

sinter key1 key2

9、sunion求多个集合的并集

sunion key1 key2

10、sdiff求多个集合的差集

sdiff key1 key2

11、将交集、并集、差集 的结果保存

集合间的运算在元素较多的情况下会比较耗时,所以redis提供了下面三个命令(原命令+store)将集合间交集、并集、差集的结果保存在destination key中

sinterstore destination key [key ...] 
suionstore destination key [key ...] 
sdiffstore destination key [key ...]

有序集合(ZSET)

有序集合它保留了集合不能有重复成员的特性,但不同的是有序集合中的元素可以排序。它和列表使用索引下标作为排序依据不同的是,有序集合给每个元素设置一个分数(score)作为排序的依据。

有序集合的元素不能重复,但是score可以重复。就像班里同学的学号不能重复,但是分数可以重复一样。

有序集合提供子获取指定分数和元素范围查询、计算成员排名等功能。

1、zadd添加成员,返回结果代表成功添加成员的个数

向有序集合u:kaoshi添加用户test01和他的分数98:

zadd u:kaoshi 98 test01

zadd命令还有四个选项nx、xx、ch、incr

  • nx:member必须不存在,才可以设置成功,用于添加
  • xx:member必须存在,才可以设置成功,用于更新
  • ch:返回此次操作后,有序集合元素和分数发生变化的个数
  • incr:对score做增加,相当于zincrby

2、zcard计算成员个数

zcard key

3、zscore计算某个成员的分数

如果成员不存在则返回nil

zscore key member

4、zrank计算成员的排名

zrank是分数从低到高返回排名,zrevrank是分数是从高到低返回排名

zrank key member
zrevrank key member

5、zrem删除成员

允许一次删除多个成员,返回结果为成功删除的个数

zrem key member

6、zincrby增加成员的分数

zincrby key score member

7、zrange 和 zrevrange 返回指定排名范围的成员

有序集合是按照分值排名的,zrange是从低到高返回,zrevrange反之,如果加上withscores选项,同时会返回成员的分数

zrange key min max 
zrange key min max withscores
zrevrange key min max
zrevrange key min max withscores

8、zrangebyscore 返回指定分数范围的成员

zrangebyscore 按照分数从低到高返回,zrevrangebyscore 反之。

zrangebyscore key min max [withscores] [limit offset count] zrevrangebyscore key max min [withscores][limit offset count]

9、zcount返回指定分数范围成员个数

zcount key min max

10、zremrangebyrank 按升序删除指定排名内的元素

zremrangebyrank key start end

11、zremrangebyscore 删除指定分数范围的成员

zremrangebyscore key min max

12、zinterstore 交集

zinterstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum / min / max]

destination:交集计算结果保存到这个键。

numkeys:需要做交集计算键的个数。

key [key …]:需要做交集计算的键。

weights weight [weight …]:每个键的权重,在做交集计算时,每个键中的每个

member 会将自己分数乘以这个权重,每个键的权重默认是 1。

aggregate sum/ min |max:计算成员交集后,分值可以按照 sum(和)、min(最

小值)、max(最大值)做汇总,默认值是 sum

13、zunionstore 并集

zunionstore destination numkeys key [key ...] [weights weight [weight ...]] [ aggregate sunmI minl max]

交集

zinterstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum / min / max]

destination:交集计算结果保存到这个键。

numkeys:需要做交集计算键的个数。

key [key …]:需要做交集计算的键。

weights weight [weight …]:每个键的权重,在做交集计算时,每个键中的每个

member 会将自己分数乘以这个权重,每个键的权重默认是 1。

aggregate sum/ min |max:计算成员交集后,分值可以按照 sum(和)、min(最

小值)、max(最大值)做汇总,默认值是 sum。

以上是关于Redis的常用命令的主要内容,如果未能解决你的问题,请参考以下文章

redis 常用命令

提效小技巧——记录那些不常用的代码片段

php Redis常用命令

Redis 入门和 RedisTemplate 常用方法(常用命令 + 案例源码)

常用的redis命令

6Redis-常用命令