IP:192.168.225.128
环境:centos7一、全局命令
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) 1192.168.225.129:6379> ttl k2(integer) 91192.168.225.129:6379> ttl ma(integer) -1192.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 valueDump+restore可以实现在不同的redis实例之间进行数据迁移的功能,整个迁移的过程分为两步;1)在源redis上,dump命令会将键值序列化,格式采用的是RDB格式2)在目标redis上,restore命令将上面序列化的值进行复原,其中ttl参数代表过期时间,ttl=0代表没有过期时间例子:源redis192.168.225.129:6379> get redis"world"192.168.225.129:6379> dump redis"\x00\x05world\a\x00\xe6\xe3\xe9w\xd8c\xa7\xd8"目标redis192.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"OK192.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 44、批量获取值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 value192.168.225.129:6379> get liming"class4"192.168.225.129:6379> setrange liming 0 m(integer) 6192.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 tom2、获取值
hget key field
192.168.225.129:6379> hset user:1 name Tom(integer) 1192.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:11) "name"2) "age"3) "grand"4) "city"
8、获取所有value
hvals key
192.168.225.129:6379> hvals user:11) "Tom"2) "20"3) "3"4) "beijing"
9、获取所有的field、value
hgetall key
10、hincrby hincrbyfloat 作用域是field
hincrby key field
hincrbyfloat key field11、计算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的元素,在其前或者后插入一个新的元素value192.168.225.129:6379> rpush mylist a b c d e f b a (integer) 8192.168.225.129:6379> linsert mylist after f g(integer) 9192.168.225.129:6379> lrange mylist 0 -11) "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 b192.168.225.129:6379> lrem listaaa 5 a(integer) 5192.168.225.129:6379> lrange listaaa 0 -11) "java"2) "php"3) "b"4) "b"192.168.225.129:6379> lrem listaaa 3 php(integer) 1192.168.225.129:6379> lrange listaaa 0 -11) "java"2) "b"3) "b"
4、修改
lset key index newValue 修改指定索引下标的元素
Eg:lset listaaa 1 python 输出为java python b5、阻塞操作
blpop key [key ...] timeout
brpop key [key ...] timeoutblpop和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 01) "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:sports3、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 , 清空当前数据库中的所有key10.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 用来记录查询执行时间的日志系统