【Redis】Redis经常使用命令

IP:192.168.225.128
环境:centos7php

1、全局命令

一、查询键

keys * 查询全部的键,会遍历全部的键值,复杂度O(n)java

二、键总数

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

三、检查键是否存在

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

四、删除键O(k)

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

五、键过时

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是毫秒centos

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>

六、键的数据结构类型

type key 若是键hello是字符串类型,则返回string;若是键不存在,则返回none服务器

七、键重命名

rename key newkey
renamenx key newkey 只有newkey不存在时才会被覆盖数据结构

八、随机返回一个键

randomkeyapp

九、迁移键

(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表明没有过时时间
例子:dom

源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,则覆盖)

十、遍历键

(1)全量遍历键

keys pattern
例如:keys h , keys [r,l]edis ,keys 等等

(2)渐进式遍历

scan 它能够有效的解决keys命令存在的阻塞问题,scan每次的额复杂度是O(1)

数据库管理

一、切换数据库

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

二、flushdb / flushall

用于清除数据库,flushdb只清除当前数据库,flushall清除全部数据库。

2、针对key的操做

一、设置值 O(1)

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

二、获取值O(1)

get key 不存在则返回nil

三、批量设置值O(k)

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

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

mget key [key ......]

五、计数O(1)

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

六、追加值O(1)

append key value 能够向字符串尾部追加值

七、字符串长度O(1)

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

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

getset key value

九、设置指定位置的字符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>

十、获取部分字符串

getrange key start end start和end分别为开始和结束的偏移量,偏移量从0开始

3、 Hash操做

一、设置值

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

二、获取值

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)

三、删除field

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

四、计算field的个数

hlen key

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

Hmget key field [field ......]
Hmset key field value [field value]

六、判断field是否存在

hexists key field

七、获取全部field

hkeys key

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

八、获取全部value

hvals key

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

九、获取全部的field、value

hgetall key

十、hincrby hincrbyfloat 做用域是field

hincrby key field
hincrbyfloat key field

十一、计算value字符串的长度

hstrlen key field

4、列表List操做

列表类型原来存储多个有序的字符串,能够重复

列表的4中操做类型
操做类型 操做
添加 rpush 、lpush、linsert
lrange、lindex、llen
删除 lpop 、rpop、 lrem、ltrim
修改 lset
阻塞操做 blpop、brpop

一、添加

(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"

二、查找

(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

三、删除

(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"

四、修改

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

五、阻塞操做

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"

5、Set操做(不可重复)

集合内的操做

一、添加元素

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

二、删除元素

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

三、计算元素个数

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

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

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

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

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

六、从集合随机弹出元素

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

七、获取全部元素

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

集合间的操做

一、求多个集合的交集 sinter key [ key ......]

二、求多个集合的并集 sunion key [key ......]

三、求多个集合的差集 sdiff key [key ......] 第一个key里面有的,第二个key里面没有的

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

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也是集合类型

6、ZADD操做(有序集合)

集合内

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

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

二、计算成员个数

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

三、计算某个成员分数

zsore key member

四、计算成员的排名

zrank key member

五、删除成员

zrem key member [member .......]

六、增长成员的分数

zincrby key increment member

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

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

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

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

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

zcount key min max

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

zremrangebyrank key start end

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

zremrangebystore key min max

集合间的操做

一、交集

二、并集

三、差集

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

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

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

8、Transaction(事务)

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

9、Connection(链接)

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

10、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 用来记录查询执行时间的日志系统
相关文章
相关标签/搜索