• 生活的道路一旦选定,就要勇敢地走到底,决不回头。——左拉
  • 坚强的信心,能使平凡的人做出惊人的事业。——马尔顿
  • 人不可有傲气,但不可无傲骨。 --徐悲鸿
  • 古之立大志者,不惟有超世之才,亦必有坚韧不拔之志。 --苏轼
  • 时间像海绵里的水,只要你愿意挤,总还是有的。 --鲁迅

Redis数据类型和管理命令

Redis zkinogg 1年前 (2020-08-09) 189次浏览 0个评论

Redis数据类型和管理命令

0.所有数据类型及常用的用途

1.string类型          字符串类型   key  value  (计数器)
2.hash类型            哈希类型    key  field  value  field  value  (存储)
3.list类型            列表类型    key  value  value  value    (消息队列)
4.Set类型              集合类型   key  {member,member,member}    (聊天软件共同好友)
5.Sorted set类型       有序集合                                   (网游排行榜)

1.String: 字符串类型

1)添加数据

#语法
127.0.0.1:6379> set key value [EX seconds] [PX milliseconds] [NX|XX]
              设置  键  值    生存时间(秒)  生存时间(毫秒)  如果不存在|如果存在

#添加key
127.0.0.1:6379> set k4 v4
OK

#添加多个key
127.0.0.1:6379> mset k5 v5 k6 v6 k7 v7 k8 v8
OK

#先查看再添加
127.0.0.1:6379> GETSET niulei sui
"cjdsb"
127.0.0.1:6379> get niulei
"sui"

#添加key同时设置生存时间
127.0.0.1:6379> set qiudao dsb ex 10
OK

#计数器增加值
127.0.0.1:6379> set good 1
OK
127.0.0.1:6379> get good
"1"
127.0.0.1:6379> INCR good
(integer) 2
127.0.0.1:6379> INCR good
(integer) 3

#计数器减少值
127.0.0.1:6379> DECR good
(integer) 2
127.0.0.1:6379> DECR good
(integer) 1
127.0.0.1:6379> DECR good
(integer) 0

#计数器增加指定值
127.0.0.1:6379> INCRBY good 100
(integer) 100
127.0.0.1:6379> INCRBY good 100
(integer) 200
127.0.0.1:6379> INCRBY good 100
(integer) 300
127.0.0.1:6379> INCRBY good 100
(integer) 400
127.0.0.1:6379> INCRBY good 100
(integer) 500
127.0.0.1:6379> get good
"500"

#计数器减少指定值
127.0.0.1:6379> DECRBY good 100
(integer) 400
127.0.0.1:6379> DECRBY good 100
(integer) 300
127.0.0.1:6379> DECRBY good 100
(integer) 200
127.0.0.1:6379> DECRBY good 100
(integer) 100
127.0.0.1:6379> get good
"100"

#计数器增加指定小数
127.0.0.1:6379> set good 8
OK
127.0.0.1:6379> get good
"8"
127.0.0.1:6379> INCRBYFLOAT good 0.1
"8.1"
127.0.0.1:6379> INCRBYFLOAT good 0.1
"8.2"
127.0.0.1:6379> INCRBYFLOAT good 0.1
"8.3"
127.0.0.1:6379> INCRBYFLOAT good 0.1
"8.4"

#计数器减少指定小数
127.0.0.1:6379> INCRBYFLOAT good -0.1
"8.3"
127.0.0.1:6379> INCRBYFLOAT good -0.1
"8.2"
127.0.0.1:6379> INCRBYFLOAT good -0.1
"8.1"
127.0.0.1:6379> INCRBYFLOAT good -0.1
"8"

2)查询数据

#查看key
127.0.0.1:6379> get k1
"qwrwjgefdlksdfjlbasklgfns"

#查看数据长度
127.0.0.1:6379> TYPE k1
string
127.0.0.1:6379> STRLEN k1
(integer) 25

#查看指定位置的数据
127.0.0.1:6379> GETRANGE k1 0 3
"qwrw"
127.0.0.1:6379> GETRANGE k1 0 0
"q"

#查看多个key的值
127.0.0.1:6379> mget k1 k2 k3 k4
1) "qwrwjgefdlksdfjlbasklgfns"
2) "v2"
3) "v3"
4) "v4"

3)删除数据

#删除key
127.0.0.1:6379> del k1
(integer) 1

#删除多个key
127.0.0.1:6379> del k2 k3 k4
(integer) 3

4)修改数据

#修改数据
127.0.0.1:6379> get k4
"v4"
127.0.0.1:6379> set k4 v444444
OK
127.0.0.1:6379> get k4
"v444444"

#追加数据
127.0.0.1:6379> APPEND k4 append
(integer) 13
127.0.0.1:6379> get k4
"v444444append"

#修改指定位置的数据
127.0.0.1:6379> get k4
"v444444append"
127.0.0.1:6379> GETRANGE k4 4 4
"4"
127.0.0.1:6379> SETRANGE k4 4 0
(integer) 13
127.0.0.1:6379> get k4
"v444044append"

2.Hash: 哈希类型

1)添加数据

#语法
127.0.0.1:6379> hset key field value
               设置  键   列    值

#添加一个key的一个列
127.0.0.1:6379> hset teacher name qiudao
(integer) 1

#添加多个列
127.0.0.1:6379> hmset teacher id 1 age 78 sex nv 
OK

2)查看数据

#查看key的一列值
127.0.0.1:6379> hget teacher name
"qiudao"
127.0.0.1:6379> hget teacher sex
"nv"
127.0.0.1:6379> hget teacher age
"78"

#查看所有列的值
127.0.0.1:6379> hgetall teacher
1) "name"
2) "qiudao"
3) "id"
4) "1"
5) "age"
6) "78"
7) "sex"
8) "nv"

3)修改数据

#添加列
127.0.0.1:6379> hset teacher money -100000
(integer) 1
127.0.0.1:6379> hgetall teacher
 1) "name"
 2) "qiudao"
 3) "id"
 4) "1"
 5) "age"
 6) "78"
 7) "sex"
 8) "nv"
 9) "money"
10) "-100000"

#修改指定列的值
127.0.0.1:6379> HSET teacher name congtianqi
(integer) 0
127.0.0.1:6379> hgetall teacher
 1) "name"
 2) "congtianqi"
 3) "id"
 4) "1"
 5) "age"
 6) "78"
 7) "sex"
 8) "nv"
 9) "money"
10) "-100000"

#使用incr
127.0.0.1:6379> HINCRBY teacher id 1
(integer) 2
127.0.0.1:6379> hgetall teacher
 1) "name"
 2) "congtianqi"
 3) "id"
 4) "2"
 5) "age"
 6) "78"
 7) "sex"
 8) "nv"
 9) "money"
10) "-100000"
127.0.0.1:6379> HINCRBY teacher money 100000
(integer) 0
127.0.0.1:6379> hgetall teacher
 1) "name" 
 2) "congtianqi"
 3) "id"
 4) "2"
 5) "age"
 6) "78"
 7) "sex"
 8) "nv"
 9) "money"
10) "0"

4)删除数据

#删除指定key的列
127.0.0.1:6379> HDEL teacher money sex
(integer) 2
127.0.0.1:6379> hgetall teacher
1) "name"
2) "congtianqi"
3) "id"
4) "2"
5) "age"
6) "78"

#删除整个key
127.0.0.1:6379> del teacher
(integer) 1

3.List: 列表类型

队列:先进先出
堆栈:先进后出

1)添加数据

#添加一个数据(往左侧添加)
127.0.0.1:6379> LPUSH list qiudao
(integer) 1

#添加多个数据(往左侧添加)
127.0.0.1:6379> LPUSH list zengdao niulei lijianpeng
(integer) 4
127.0.0.1:6379> LPUSH list liuxinyu
(integer) 5

#添加多条数据(往右侧添加)
127.0.0.1:6379> RPUSH list congtianqi
(integer) 6
127.0.0.1:6379> RPUSH zhangxin guozongyuan geshaosong
(integer) 2
127.0.0.1:6379> RPUSH list zhangxin guozongyuan geshaosong

2)查看数据

#查看列表所有数据
127.0.0.1:6379> LRANGE list 0 -1
1) "liuxinyu"
2) "lijianpeng"
3) "niulei"
4) "zengdao"
5) "qiudao"
6) "congtianqi"
7) "zhangxin"
8) "guozongyuan"
9) "geshaosong"

#查看列表类型数据量
127.0.0.1:6379> type list
list
127.0.0.1:6379> LLEN list
(integer) 9

#查看指定位置的数据
127.0.0.1:6379> LINDEX list 0
"liuxinyu"
127.0.0.1:6379> LINDEX list 1
"lijianpeng"

#读取队列数据,消费队列数据,消费一条少一条
1.使用lpush插入数据
127.0.0.1:6379> LPUSH list liukong
(integer) 10

2.查看数据
127.0.0.1:6379> LRANGE list 0 -1
 1) "liukong"
 2) "liuxinyu"
 3) "lijianpeng"
 4) "niulei"
 5) "zengdao"
 6) "qiudao"
 7) "congtianqi"
 8) "zhangxin"
 9) "guozongyuan"
10) "geshaosong"

3.使用LPOP消费数据
127.0.0.1:6379> LPOP list
"liukong"
127.0.0.1:6379> LPOP list
"liuxinyu"

4.再次查看数据
127.0.0.1:6379> LRANGE list 0 -1
1) "lijianpeng"
2) "niulei"
3) "zengdao"
4) "qiudao"
5) "congtianqi"
6) "zhangxin"
7) "guozongyuan"
8) "geshaosong"

5.使用RPOP消费数据
127.0.0.1:6379> RPOP list
"geshaosong"
127.0.0.1:6379> RPOP list
"guozongyuan"
127.0.0.1:6379> RPOP list
"zhangxin"

6.再次查看数据
127.0.0.1:6379> LRANGE list 0 -1
1) "lijianpeng"
2) "niulei"
3) "zengdao"
4) "qiudao"
5) "congtianqi"

#总结:
1.当使用LPUSH插入数据,使用LPOP消费数据时,是堆栈
  当使用RPUSH插入数据,使用RPOP消费数据时,是堆栈
2.当使用LPUSH插入数据,使用RPOP消费数据时,是队列
  当使用RPUSH插入数据,使用LPOP消费数据时,是队列

3)修改数据

#修改指定位置的数据
127.0.0.1:6379> LSET list 2 daijiadong
OK
127.0.0.1:6379> LRANGE list 0 -1
1) "lijianpeng"
2) "niulei"
3) "daijiadong"
4) "qiudao"
5) "congtianqi"

#将数据插入到列表指定位置
127.0.0.1:6379> LINSERT list after qiudao banzhang
(integer) 6
127.0.0.1:6379> LRANGE list 0 -1
1) "lijianpeng"
2) "niulei"
3) "daijiadong"
4) "qiudao"
5) "banzhang"
6) "congtianqi"

#将列表数据取出插入另一个列表
127.0.0.1:6379> RPOPLPUSH list list
"congtianqi"
127.0.0.1:6379> LRANGE list 0 -1
1) "congtianqi"
2) "lijianpeng"
3) "niulei"
4) "daijiadong"
5) "qiudao"
6) "banzhang"
127.0.0.1:6379>

4)删除数据

#删除key
127.0.0.1:6379> DEL list

#删除指定数量的值(当数量不够时,删除仅有的值)
127.0.0.1:6379> LRANGE list 0 -1
1) "congtianqi"
2) "lijianpeng"
3) "niulei"
4) "daijiadong"
5) "qiudao"
6) "banzhang"

127.0.0.1:6379> LREM list 2 congtianqi
(integer) 1
127.0.0.1:6379> LRANGE list 0 -1
1) "lijianpeng"
2) "niulei"
3) "daijiadong"
4) "qiudao"
5) "banzhang"

#从头开始,索引为0,1,2的3个元素,其余全部删除改(反向删除)
127.0.0.1:6379> ltrim list 0 2
OK
127.0.0.1:6379> LRANGE list 0 -1
1) "lijianpeng"
2) "niulei"
3) "daijiadong"
127.0.0.1:6379>

4.Set: 集合类型

在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。Redis还为集合提供了求交集、并集、差集等操作,可以非常方便的实现如共同关注、共同喜好、二度好友等功能,对上面的所有集合操作,你还可以使用不同的命令选择将结果返回给客户端还是存集到一个新的集合中。

1)添加数据

#添加两个集合(集合中设置一样的值没有效果)
127.0.0.1:6379> sadd set1 1 2 3 5 7
(integer) 5

127.0.0.1:6379> sadd set2 1 3 5 8 9
(integer) 5

2)查看数据

#查看集合的数据
127.0.0.1:6379> SMEMBERS set1
1) "1"
2) "2"
3) "3"
4) "5"
5) "7"
127.0.0.1:6379> SMEMBERS set2
1) "1"
2) "3"
3) "5"
4) "8"
5) "9"

#查看集合中是否有某个值
127.0.0.1:6379> SISMEMBER set1 1
(integer) 1
127.0.0.1:6379> SISMEMBER set1 0
(integer) 0

#查看集合中的数据量
127.0.0.1:6379> SCARD set1
(integer) 5

#获取集合中随机值
127.0.0.1:6379> SRANDMEMBER set1 1
1) "2"

#取集合的交集
127.0.0.1:6379> SINTER set1 set2
1) "1"
2) "3"
3) "5"

#取集合的并集
127.0.0.1:6379> SUNION set1 set 2
1) "1"
2) "2"
3) "3"
4) "5"
5) "7"

#对比集合(取出前者有而后者没有的值)
127.0.0.1:6379> SDIFF set1 set2
1) "2"
2) "7"
127.0.0.1:6379> SDIFF set2 set1
1) "8"
2) "9"


#对比集合的数据时,拿前者与后者对比,取出前者有而后者没有的,不管后者由而前者没有的
127.0.0.1:6379> SMEMBERS set3
1) "0"
2) "1"
3) "5"
4) "8"
5) "9"
127.0.0.1:6379> SMEMBERS set2
1) "1"
2) "3"
3) "4"
4) "6"
5) "8"
127.0.0.1:6379> SMEMBERS set1
1) "1"
2) "2"
3) "3"
4) "5"
5) "7"

#对比
127.0.0.1:6379> SDIFF set1 set2
1) "2"
2) "5"
3) "7"
#三者对比
127.0.0.1:6379> SDIFF set1 set2 set3
1) "2"
2) "7"

3)修改数据

#移动集合中的值到另一个集合
127.0.0.1:6379> SMOVE set1 set2 2
(integer) 1
127.0.0.1:6379> SMEMBERS set1
1) "1"
2) "3"
3) "5"
4) "7"
127.0.0.1:6379> SMEMBERS set2
1) "1"
2) "2"
3) "3"
4) "5"
5) "8"
6) "9"

4)删除数据

#尾部数据查询,查询到即删除
127.0.0.1:6379> SPOP set1
"7"
127.0.0.1:6379> SPOP set1 2
1) "5"
2) "3"
127.0.0.1:6379> SMEMBERS set1
1) "1"

#删除指定值,若值不存在则只删除有的值
127.0.0.1:6379> SREM set2 1 2 3 5
(integer) 4
127.0.0.1:6379> SMEMBERS set2
1) "8"
2) "9"

5.有序集合 sorted-set

应用场景:
排行榜应用,取TOP N操作
这个需求与上面需求的不同之处在于,前面操作以时间为权重,这个是以某个条件为权重,比如按顶的次数排序,这时候就需要我们的sorted set出马了,将你要排序的值设置成sorted set的score,将具体的数据设置成相应的value,每次只需要执行一条ZADD命令即可。

1)添加数据

#添加一个数据
127.0.0.1:6379> ZADD linux9 90 banzhang 80 shengwei 50 jiwei 20 tiwei 100 xuewei
(integer) 5

2)查看数据

#查看排序后数据
127.0.0.1:6379> ZRANGE linux9 0 -1
1) "tiwei"
2) "jiwei"
3) "shengwei"
4) "banzhang"
5) "xuewei"

#查看排序及排序依据
127.0.0.1:6379> ZRANGE linux9 0 -1 WITHSCORES
 1) "tiwei"
 2) "20"
 3) "jiwei"
 4) "50"
 5) "shengwei"
 6) "80"
 7) "banzhang"
 8) "90"
 9) "xuewei"
10) "100"

#查看排序及排序依据(倒叙)
127.0.0.1:6379> ZREVRANGE linux9 0 -1 WITHSCORES
 1) "xuewei"
 2) "100"
 3) "banzhang"
 4) "90"
 5) "shengwei"
 6) "80"
 7) "jiwei"
 8) "50"
 9) "tiwei"
10) "20"

#查看指定成员的分数
127.0.0.1:6379> ZSCORE linux9 xuewei
"100"

#查看成员的数量
127.0.0.1:6379> ZCARD linux9
(integer) 5

#查看符合条件范围的成员
127.0.0.1:6379> ZCOUNT linux9 50 100
(integer) 4
127.0.0.1:6379> ZRANGEBYSCORE linux9 50 100
1) "jiwei"
2) "shengwei"
3) "banzhang"
4) "xuewei"
127.0.0.1:6379> ZRANGEBYSCORE linux9 50 100 WITHSCORES
1) "jiwei"
2) "50"
3) "shengwei"
4) "80"
5) "banzhang"
6) "90"
7) "xuewei"
8) "100"

3)修改数据

#修改数据的值,排行榜顺序也会改变
127.0.0.1:6379> ZINCRBY linux9 100 tiwei
"120"
127.0.0.1:6379> ZREVRANGE linux9 0 -1 WITHSCORES
 1) "tiwei"
 2) "120"
 3) "xuewei"
 4) "100"
 5) "banzhang"
 6) "90"
 7) "shengwei"
 8) "80"
 9) "jiwei"
10) "50"

4)删除数据

#删除集合中指定成员
127.0.0.1:6379> zrem linux9 shengwei 
(integer) 1
127.0.0.1:6379> ZREVRANGE linux9 0 -1 WITHSCORES
1) "tiwei"
2) "120"
3) "xuewei"
4) "100"
5) "banzhang"
6) "90"
7) "jiwei"
8) "50"

#删除整个key
127.0.0.1:6379> del linux9
(integer) 1

二、redis管理命令

1.info命令

#查看redis相关信息
127.0.0.1:6379> info
#服务端信息
# Server
#版本号
redis_version:3.2.12
#redis版本控制安全hash算法
redis_git_sha1:00000000
#redis版本控制脏数据
redis_git_dirty:0
#redis建立id
redis_build_id:3b947b91b7c31389
#运行模式:单机(如果是集群:cluster)
redis_mode:standalone
#redis所在宿主机的操作系统
os:Linux 2.6.32-431.el6.x86_64 x86_64
#架构(64位)
arch_bits:64
#redis事件循环机制
multiplexing_api:epoll
#GCC的版本
gcc_version:4.4.7
#redis进程的pid
process_id:33007
#redis服务器的随机标识符(用于sentinel和集群)
run_id:46b07234cf763cab04d1b31433b94e31b68c6e26
#redis的端口
tcp_port:6379
#redis服务器的运行时间(单位秒)
uptime_in_seconds:318283
#redis服务器的运行时间(单位天)
uptime_in_days:3
#redis内部调度(进行关闭timeout的客户端,删除过期key等等)频率,程序规定serverCron每秒运行10次
hz:10
#自增的时钟,用于LRU管理,该时钟100ms(hz=10,因此每1000ms/10=100ms执行一次定时任务)更新一次
lru_clock:13601047
#服务端运行命令路径
executable:/application/redis-3.2.12/redis-server
#配置文件路径
config_file:/etc/redis/6379/redis.conf

#客户端信息
# Clients
#已连接客户端的数量(不包括通过slave的数量)
connected_clients:2
##当前连接的客户端当中,最长的输出列表,用client list命令观察omem字段最大值
client_longest_output_list:0
#当前连接的客户端当中,最大输入缓存,用client list命令观察qbuf和qbuf-free两个字段最大值
client_biggest_input_buf:0
#正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量
blocked_clients:0

#内存信息
# Memory
#由redis分配器分配的内存总量,以字节为单位
used_memory:845336
#以人类可读的格式返回redis分配的内存总量
used_memory_human:825.52K
#从操作系统的角度,返回redis已分配的内存总量(俗称常驻集大小)。这个值和top命令的输出一致
used_memory_rss:1654784
#以人类可读方式,返回redis已分配的内存总量
used_memory_rss_human:1.58M
#redis的内存消耗峰值(以字节为单位)
used_memory_peak:845336
#以人类可读的格式返回redis的内存消耗峰值
used_memory_peak_human:825.52K
#整个系统内存
total_system_memory:1028517888
#以人类可读的格式,显示整个系统内存
total_system_memory_human:980.87M
#Lua脚本存储占用的内存
used_memory_lua:37888
#以人类可读的格式,显示Lua脚本存储占用的内存
used_memory_lua_human:37.00K
#Redis实例的最大内存配置
maxmemory:0
#以人类可读的格式,显示Redis实例的最大内存配置
maxmemory_human:0B
#当达到maxmemory时的淘汰策略
maxmemory_policy:noeviction
#内存分裂比例(used_memory_rss/ used_memory)
mem_fragmentation_ratio:1.96
#内存分配器
mem_allocator:jemalloc-4.0.3

#持久化信息
# Persistence
#服务器是否正在载入持久化文件
loading:0
#离最近一次成功生成rdb文件,写入命令的个数,即有多少个写入命令没有持久化
rdb_changes_since_last_save:131
#服务器是否正在创建rdb文件
rdb_bgsave_in_progress:0
#最近一次rdb持久化保存时间
rdb_last_save_time:1540009420
#最近一次rdb持久化是否成功
rdb_last_bgsave_status:ok
#最近一次成功生成rdb文件耗时秒数
rdb_last_bgsave_time_sec:-1
#如果服务器正在创建rdb文件,那么这个域记录的就是当前的创建操作已经耗费的秒数
rdb_current_bgsave_time_sec:-1
#是否开启了aof
aof_enabled:0
#标识aof的rewrite操作是否在进行中
aof_rewrite_in_progress:0
#rewrite任务计划,当客户端发送bgrewriteaof指令,如果当前rewrite子进程正在执行,那么将客户端请求的bgrewriteaof变为计划任务,待aof子进程结束后执行rewrite
aof_rewrite_scheduled:0
#最近一次aof rewrite耗费的时长
aof_last_rewrite_time_sec:-1
#如果rewrite操作正在进行,则记录所使用的时间,单位秒
aof_current_rewrite_time_sec:-1
#上次bgrewriteaof操作的状态
aof_last_bgrewrite_status:ok
#上次aof写入状态
aof_last_write_status:ok

#统计信息
# Stats
#新创建连接个数,如果新创建连接过多,过度地创建和销毁连接对性能有影响,说明短连接严重或连接池使用有问题,需调研代码的连接设置
total_connections_received:19
#redis处理的命令数
total_commands_processed:299
#redis当前的qps,redis内部较实时的每秒执行的命令数
instantaneous_ops_per_sec:0
#redis网络入口流量字节数
total_net_input_bytes:10773
#redis网络出口流量字节数
total_net_output_bytes:97146
#redis网络入口kps
instantaneous_input_kbps:0.00
#redis网络出口kps
instantaneous_output_kbps:0.00
#拒绝的连接个数,redis连接个数达到maxclients限制,拒绝新连接的个数
rejected_connections:0
#主从完全同步次数
sync_full:0
#主从完全同步成功次数
sync_partial_ok:0
#主从完全同步失败次数
sync_partial_err:0
#运行以来过期的key的数量
expired_keys:5
#过期的比率
evicted_keys:0
#命中次数
keyspace_hits:85
#没命中次数
keyspace_misses:17
#当前使用中的频道数量
pubsub_channels:0
#当前使用的模式的数量
pubsub_patterns:0
#最近一次fork操作阻塞redis进程的耗时数,单位微秒
latest_fork_usec:0
#是否已经缓存了到该地址的连接
migrate_cached_sockets:0

#主从复制信息
# Replication
#角色主库
role:master
#连接slave的个数
connected_slaves:0
#主从同步偏移量,此值如果和上面的offset相同说明主从一致没延迟,与master_replid可被用来标识主实例复制流中的位置
master_repl_offset:0
#复制积压缓冲区是否开启
repl_backlog_active:0
#复制积压缓冲大小
repl_backlog_size:1048576
#复制缓冲区里偏移量的大小
repl_backlog_first_byte_offset:0
#此值等于 master_repl_offset - repl_backlog_first_byte_offset,该值不会超过repl_backlog_size的大小
repl_backlog_histlen:0

#CPU信息
# CPU
#将所有redis主进程在内核态所占用的CPU时求和累计起来
used_cpu_sys:203.44
#将所有redis主进程在用户态所占用的CPU时求和累计起来
used_cpu_user:114.57
#将后台进程在内核态所占用的CPU时求和累计起来
used_cpu_sys_children:0.00
#将后台进程在用户态所占用的CPU时求和累计起来
used_cpu_user_children:0.00

#集群信息
# Cluster
#实例是否启用集群模式
cluster_enabled:0

#库相关统计信息
# Keyspace
#db0的key的数量,以及带有生存期的key的数,平均存活时间
db0:keys=17,expires=0,avg_ttl=0

#单独查看某一个信息(例:查看CPU信息)
127.0.0.1:6379> info cpu
# CPU
used_cpu_sys:203.45
used_cpu_user:114.58
used_cpu_sys_children:0.00
used_cpu_user_children:0.00

2.client命令

127.0.0.1:6379> CLIENT LIST
id=2 addr=127.0.0.1:38988 fd=7 name= age=86036 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
id=4 addr=127.0.0.1:38992 fd=8 name= age=52 idle=52 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=command

3.config命令

#查看redis所有的配置
127.0.0.1:6379> CONFIG GET *
  1) "dbfilename"
  2) "dump.rdb"
  3) "requirepass"
  4) ""
  .......

4.dbsize命令

#查看当前redis有多少数据
127.0.0.1:6379> DBSIZE
(integer) 18

5.select命令

在Redis中也是有库这个概念的,不过不同于MySQL,Redis的库是默认的,并不是我们手动去创建的,在Redis中一共有16(0-15)个库。在MySQL中进入某一个库,我们需要使用use dbname,在Redis中,只需要select即可。默认情况下,我们是在0库中进行操作,每个库之间都是隔离的。

#切换1库
127.0.0.1:6379> select 1
OK
#查看1库数据
127.0.0.1:6379[1]> DBSIZE
(integer) 0

6.flush命令(flushdb、flushall)

1.flushdb(清空当前库)
127.0.0.1:6379[1]> keys *
1) "k2"
2) "k1"
127.0.0.1:6379[1]> FLUSHDB
OK
127.0.0.1:6379[1]> keys *
(empty list or set)

2.flushall(清空所有库数据)
127.0.0.1:6379[1]> FLUSHALL
OK
127.0.0.1:6379[1]> keys *
(empty list or set)
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> keys *
(empty list or set)

7.monitor命令

#窗口1执行
127.0.0.1:6379> MONITOR
OK

#窗口2执行命令
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> set k3 v3
OK
127.0.0.1:6379> del k1
(integer) 1

#窗口1查看
1596591822.059876 [0 127.0.0.1:38988] "set" "k1" "v1"
1596591827.003306 [0 127.0.0.1:38988] "set" "k2" "v2"
1596591830.524161 [0 127.0.0.1:38988] "set" "k3" "v3"
1596591833.501550 [0 127.0.0.1:38988] "del" "k1"

#将监控的内容写到文件方法(类似于MySQL的一般查询日志)
[root@db01 ~]# redis-cli MONITOR >> /tmp/caozuo.log &
[1] 15333
[root@db01 ~]# tail -f /tmp/caozuo.log

极客公园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Redis数据类型和管理命令
喜欢 (0)
[17551054905]
分享 (0)

您必须 登录 才能发表评论!