Redis常用命令

一、全局命令

1、查询键

keys * 查询所有的键,会遍历所有的键值,复杂度O(n)

2、键总数

dbsize 查询键总数,直接获取redis内置的键总数变量,复杂度O(1)

3、检查键是否存在

exists key 存在返回1,不存在返回0

4、删除键O(k)

del key [key…] 返回结果为成功删除键的个数

5、键过期

expire key seconds 当超过过期时间,会自动删除,key在seconds秒后过期
expireat key timestamp 键在秒级时间戳timestamp后过期
pexpire key milliseconds 当超过过期时间,会自动删除,key在milliseconds毫秒后过期
pexpireat key milliseconds-timestamp key在豪秒级时间戳timestamp后过期
ttl 命令可以查看键hello的剩余过期时间,单位:秒(>0剩余过期时间;-1没设置过期时间;-2键不存在)
pttl是毫秒

192.168.225.129:6379> expire k2 100
(integer) 1
192.168.225.129:6379> ttl k2
(integer) 91
192.168.225.129:6379> ttl ma
(integer) -1
192.168.225.129:6379> 

6、键的数据结构类型

type key 如果键hello是字符串类型,则返回string;如果键不存在,则返回none

7、键重命名

rename key newkey
renamenx key newkey 只有newkey不存在时才会被覆盖

8、随机返回一个键

randomkey

9、迁移键

(1)move key db (不建议再生产环境中使用)把指定的键从源数据库移动到目标数据库
(2)dump+restore
dump key
Restore key ttl value
Dump+restore可以实现在不同的redis实例之间进行数据迁移的功能,整个迁移的过程分为两步;
1)在源redis上,dump命令会将键值序列化,格式采用的是RDB格式
2)在目标redis上,restore命令将上面序列化的值进行复原,其中ttl参数代表过期时间,ttl=0代表没有过期时间
例子:

源redis
192.168.225.129:6379> get redis
"world"
192.168.225.129:6379> dump redis
"\x00\x05world\a\x00\xe6\xe3\xe9w\xd8c\xa7\xd8"
目标redis
192.168.225.128:6379> get redis
(nil)
192.168.225.128:6379> restore redis 0 "\x00\x05world\a\x00\xe6\xe3\xe9w\xd8c\xa7\xd8"
OK
192.168.225.128:6379> get redis
"world"

(3)migrate
migrate实际上是吧dump、restore、del 3个命令进行组合,从而简化了操作步骤。
Migrate host port key [ key …] destination-db timeout [replace]
源redis中执行
192.168.225.129:6379> migrate 192.168.225.128 6379 flower 0 1000 replace
(将键flower迁移至目标192.168.225.128:6379的库0中,超时时间为1000毫秒,replace表示目标库如果存在键flower,则覆盖)

10、遍历键

(1)全量遍历键
keys pattern
例如:keys h , keys [r,l]edis ,keys 等等

(2)渐进式遍历
scan 它可以有效的解决keys命令存在的阻塞问题,scan每次的额复杂度是O(1)

数据库管理

1、切换数据库
select dbIndex
默认16个数据库:0-15,进入redis后默认是0库。不建议使用多个数据库

2、flushdb / flushall
用于清除数据库,flushdb只清除当前数据库,flushall清除所有数据库。

二、针对key的操作

1、设置值 O(1)

set key value [ex]  [px]  [nx|xx]
ex为键值设置秒级过期时间
px为键值设置毫秒级过期时间
nx键必须不存在,才可以设置成功,用于添加
xx与nx相反,键必须存在,才可以设置成功,用于更新
setnx、setex 与上面的nx、ex作用相同

2、获取值O(1)

get key 不存在则返回nil

3、批量设置值O(k)

mset key value [key value …]
mset a 1 b 2 c 3 d 4

4、批量获取值O(k),k是键的个数

mget key [key …]

5、计数O(1)

incr key
decr key /inceby key increment /decrby key increment
返回结果分为3中情况:
值不是整数,返回错误;
值是整数,返回自增后的结果;
键不存在,按照值为0自增,返回结果为1。

6、追加值O(1)

append key value 可以向字符串尾部追加值

7、字符串长度O(1)

strlen key
每个汉字占用3个字字节

8、设置并返回原值O(1)

getset key value

9、设置指定位置的字符O(n),n是字符串长度

setrange key offeset value
192.168.225.129:6379> get liming
"class4"
192.168.225.129:6379> setrange liming 0 m
(integer) 6
192.168.225.129:6379> get liming
"mlass4"
192.168.225.129:6379> 

10、获取部分字符串
getrange key start end start和end分别为开始和结束的偏移量,偏移量从0开始

三、 Hash操作

1、设置值

hset key field value
还提供了hsetnx命令
Eg:hset user:1 name tom

2、获取值

hget key field
192.168.225.129:6379> hset user:1 name Tom
(integer) 1
192.168.225.129:6379> hget user:1 name
"Tom"
192.168.225.129:6379> hget user:1 age
(nil)

3、删除field

hdel key field [field …] 会删除一个或多个field,返回结果为成功删除fiel的个数

4、计算field的个数

hlen key

5、批量设置或获取field-value

Hmget key field [field …]
Hmset key field value [field value]

6、判断field是否存在

hexists key field

7、获取所有field

hkeys key

192.168.225.129:6379> hkeys user:1
1) "name"
2) "age"
3) "grand"
4) "city"

8、获取所有value

hvals key

192.168.225.129:6379> hvals user:1
1) "Tom"
2) "20"
3) "3"
4) "beijing"

9、获取所有的field、value

hgetall key

10、hincrby hincrbyfloat 作用域是field

hincrby key field
hincrbyfloat key field

11、计算value字符串的长度

hstrlen key field

四、列表List操作

列表类型原来存储多个有序的字符串,可以重复
列表的4种操作类型

添加 rpush 、lpush、linsert
查 lrange、lindex、llen
删除 lpop 、rpop、 lrem、ltrim
修改 lset
阻塞操作 blpop、brpop

1、添加

(1)从右边插入元素
rpush key value [value…]

(2)从左边插入元素
lpush key value [value…]

(3)向某个元素前或者后插入元素
linsert key before|after pivot value
linsert命令会从列表中找到等于pivot的元素,在其前或者后插入一个新的元素value

192.168.225.129:6379> rpush mylist a b c d e f b a 
(integer) 8
192.168.225.129:6379> linsert mylist after f g
(integer) 9
192.168.225.129:6379> lrange mylist 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
6) "f"
7) "g"
8) "b"
9) "a"

2、查找

(1)获取指定范围内的元素列表
lrange key start end 索引下标从左到右分别是0到N-1,从右到左分别是-1到-N;end选项包含了自身
lrange key 0 -1 可以从左到右获取列表的所有元素
lrange mylist 1 3 获取列表中第2个到第4个元素

(2)获取列表指定下标的元素
lindex key index

(3)获取列表长度
llen key

3、删除

(1)从列表右侧弹出元素
rpop key

(2)从列表左侧弹出元素
lpop key

(3)删除指定元素
lrem key count value
Lrem命令会从列表中找到=value的元素进行删除,根据count的不同分为3中情况

 Count>0,从左到有,删除最多count个元素
 Count<0,从右到左,删除最多count绝对值个元素
 Count=0,删除所有    
列表listaaa为a a a a java php b a b
192.168.225.129:6379> lrem listaaa 5 a
(integer) 5
192.168.225.129:6379> lrange listaaa 0 -1
1) "java"
2) "php"
3) "b"
4) "b"
192.168.225.129:6379> lrem listaaa 3 php
(integer) 1
192.168.225.129:6379> lrange listaaa 0 -1
1) "java"
2) "b"
3) "b"

4、修改

lset key index newValue 修改指定索引下标的元素
Eg:lset listaaa 1 python 输出为java python b

5、阻塞操作

blpop key [key …] timeout
brpop key [key …] timeout
blpop和brpop是lpop、rpop的阻塞版本,除了弹出方式不同,使用方法基本相同,timeout阻塞时间

(1)列表为空
brpop list:test 3 3秒后返回
brpop list:test 0 一直处于阻塞中

(2)列表不为空
brpop mylist 0 立刻返回

192.168.225.129:6379> brpop mylist 0
1) "mylist"
2) "a"

五、Set操作(不可重复)

集合内的操作

1、添加元素

sadd key element [element …] 返回结果为添加成功的元素个数

2、删除元素

srem key element [element …] 返回结果为删除成功的元素个数

3、计算元素个数

Scard key scard的时间复杂度为O(1),直接用redis内部的变量

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

Sismember key element 在集合中则返回1,否则返回0

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

Srandmember key [count] count可不写,默认为1

6、从集合随机弹出元素

Spop key [count] 3.2版本开始支持[count]

7、获取所有元素

Smembers key 它和lrange、hgetall都属于比较重的命令,有时候可以使用sscan来完成

集合间的操作
1、求多个集合的交集 sinter key [ key …]
2、求多个集合的并集 sunion key [key …]
3、求多个集合的差集 sdiff key [key …] 第一个key里面有的,第二个key里面没有的
4、将交集、并集、差集的结果保存
sinterstore destination key [ key …]
sunionstore destination key [ key …]
sdiffstore destination key [ key …]
例如:sinterstore user:1_2:inter user:1 user:2 user:1_2:incr也是集合类型

六、ZADD操作(有序集合)

集合内

1、添加成员 时间复杂度O(log(n)), sadd为O(1)

zadd key score member[score member …] 返回结果为添加成功的元素个数

2、计算成员个数

zcard key scard的时间复杂度为O(1),直接用redis内部的变量

3、计算某个成员分数

zsore key member

4、计算成员的排名

zrank key member

5、删除成员

zrem key member [member …]

6、增加成员的分数

zincrby key increment member

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

zrange key start end [withscores] 从低分到高分
zrevrange key start end [withscores] 从高分到低分

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

zrange key min max [withscores] [limit offset count ] 按照分数从低分到高分
zrevrange key max min [withscores] [limit offset count ] 按照分数从高分到低分

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

zcount key min max

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

zremrangebyrank key start end

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

zremrangebystore key min max

集合间的操作
1、交集
2、并集
3、差集
4、将交集、并集、差集的结果保存

七、pub/sub(发布、订阅)

1、publish channel message           发布消息    eg:publish channel:sports 'I want to go eatting'
2、subscribe channel [channel .....]     订阅消息    eg: subscribe channel:sports
3、unsubscribe channel [channel .....]   取消订阅
4、psubscribe pattern [pattern ......]    按照模式订阅
5、unpsubscribe pattern [pattern ......]  按照模式取消订阅
6、查询订阅
 pubsub channels                    查看活跃的频道
   192.168.225.128:6379> pubsub channels
   1) "channel:sports"
   2) "__sentinel__:hello"
  pubsub numsub [channel ......]        查看频道订阅数  pubsub numsub channel:sports
  pubsub numpat                    查看模式订阅数
7、说明:
   客户端在执行订阅命令之后进入了订阅状态,只能接收四个命令:subscribe、psubscribe、unsubscribe、punsubscribe;
   新开启的订阅客户端,无法收到该频道之前的消息,因为redis不会对发布的消息进行持久化。

八、Transaction(事务)

8.1 discard                             , 取消执行事务块内的所有命令
8.2 exec                                , 执行事务块内的命令
8.3 multi                               , 标记一个事务块的开始
8.4 unwatch                             , 取消watch命令对所有key的监视
8.5 watch key [key ...]                 , 监视一个或者多个key,如果事务执行之前,这个kye被其它命令所动,则事务被打断

九、Connection(连接)

 9.1 auth password                       , 登录redis时输入密码
 9.2 echo message               , 打印一个特定的信息message,测试时使用
 9.3 ping                                , 测试与服务器的连接,如果正常则返回pong
 9.4 quit                                , 请求服务器关闭与当前客户端的连接
 9.5 select index                        , 切换到指定的数据库

十、Server(服务器)

10.1 bgsave                             , 后台异步保存数据到硬盘
10.2 client setname/client getname      , 为连接设置、获取名字
10.3 client kill ip:port                , 关闭地址为 ip:port的客户端
10.4 client list                        , 以人类可读的方式,返回所有的连接客户端信息和统计数据
10.5 config get parameter               , 取得运行redis服务器的配置参数
10.6 config set parameter value         , 设置redis服务器的配置参数
10.7 config resetstat                   , 重置info命令的某些统计数据
10.8 dbsize                             , 返回当前数据库中key的数量
10.9 flushall                           , 清空整个redis服务器的数据(删除所有数据库的所有 key)
10.10 flushdb                           , 清空当前数据库中的所有key
10.11 info [section]                    , 返回redis服务器的各种信息和统计数据
10.12 lastsave                          , 返回最近一次redis成功将数据保存到磁盘时的时间
10.13 monitor                           , 实时打印出redis服务器接收到的指令
10.14 save                              , 将当前 Redis 实例的所有数据快照(snapshot)以 RDB 文件的形式保存到硬盘
10.15 slaveof host port                 , 将当前服务器转变为指定服务器的从属服务器
 10.16 slowlog subcommand [argument]     , Redis 用来记录查询执行时间的日志系统

你可能感兴趣的:(redis,数据库,缓存)