全局命令:

查看所有键:

keys *

键总数:

dbsize

检查键是否存在:

exists key

删除键:

del key [key...]

键过期:

expire key seconds

键的数据类型:

type key

通过object encoding命令查询内部编码

Redis使用了单线程架构和I/O多路复用模型来实现高性能的内存数据库服务

1)纯内存访问

2)非阻塞I/O,Redis使用epoll作为I/O多路复用技术的实现

3)单线程避免了线程切换和竞态产生的消耗

键重命名:

rename key newkey

迁移键:

move key db 用于在Redis内部进行数据迁移

dump key + restore key ttl value 可以实现在不同的Redis实例之间进行数据迁移

127.0.0.1:6379> dump name

"\x00\x05allen\a\x00\x82\x9a*T/\xb9\x9b\x87"

127.0.0.1:6379> dump age

"\x00\xc0!\a\x006.9\xfaQ\x06\xe8\r"

127.0.0.1:6379> dump pass

"\x00\x06abc123\a\x00\x90\t\xe8\x1b\xf2\xd4\x8b\xec"

192.168.1.122:6379> restore name 0 "\x00\x05allen\a\x00\x82\x9a*T/\xb9\x9b\x87"

OK

192.168.1.122:6379> restore age 0 "\x00\xc0!\a\x006.9\xfaQ\x06\xe8\r"

OK

192.168.1.122:6379> restore pass 0 "\x00\x06abc123\a\x00\x90\t\xe8\x1b\xf2\xd4\x8b\xec"

OK

migrate host port key|"" destination-db timeout [copy] [replace] [keys key [key ...]]

127.0.0.1:6379> migrate 192.168.1.122 6379 name 0 5000  默认是删除源库的键值

OK

127.0.0.1:6379> migrate 192.168.1.122 6379 "" 0 5000 copy keys age pass  加copy和replace源库不删除键值

OK

遍历键:

keys *

scan命令可以解决keys命令可能带来的阻塞问题,同时Redis还提供了hscan、sscan、zscan渐进式遍历hash、zset、zset

慢查询分析:

慢查询两个参数slowlog-log-slower-than,单位是微秒,默认是10000微秒,即10毫秒。slowlog-max-len建议设置为1000以上。

config set slowlog-log-slower-than 20000

config set slowlog-max-len 1000

config rewrite

将Redis配置持久化到本地配置文件,需要执行config rewrite命令

获取慢查询日志长度:

slowlog len

获取慢查询日志:

slowlog get [n]

慢查询日志重置:

slowlog reset

Redis Shell:

redis-cli -r 5 -i 1 ping

redis-cli -r 10 -i 1 info | grep used_memory_human

echo "world" | redis-cli -x set hello  -x选项代表从标准输入读取数据作为redis-cli的最后一个参数

redis-cli --latency 可以测试客户端到目标Redis的网络延迟

redis-cli --bigkeys 使用scan命令对Redis的键进行采样,从中找到内存占用比较大的键值,这些键值可能是系统的瓶颈

 

 

Redis服务器命令

Redis 服务器命令主要是用于管理 redis 服务

获取redis服务器的统计信息:

[root@mysql1 src]# ./redis-cli

127.0.0.1:6379> info

# Server

redis_version:3.2.3

redis_git_sha1:00000000

redis_git_dirty:0

redis_build_id:edc5a285ff373c21

redis_mode:standalone

os:Linux 2.6.32-431.el6.x86_64 x86_64

arch_bits:64

multiplexing_api:epoll

gcc_version:4.4.7

process_id:50131

run_id:5cda11ef7fb37e28d22a6458ecb292eaeb147ea8

tcp_port:6379

uptime_in_seconds:14723

uptime_in_days:0

hz:10

lru_clock:11206608

executable:/software/redis-3.2.3/src/./redis-server

config_file:

# Clients

connected_clients:1

client_longest_output_list:0

client_biggest_input_buf:0

blocked_clients:0

# Memory

used_memory:824104

used_memory_human:804.79K

used_memory_rss:8224768

used_memory_rss_human:7.84M

used_memory_peak:824104

used_memory_peak_human:804.79K

total_system_memory:2087575552

total_system_memory_human:1.94G

used_memory_lua:65536

used_memory_lua_human:64.00K

maxmemory:0

maxmemory_human:0B

maxmemory_policy:noeviction

mem_fragmentation_ratio:9.98

mem_allocator:jemalloc-4.0.3

# Persistence

loading:0

rdb_changes_since_last_save:0

rdb_bgsave_in_progress:0

rdb_last_save_time:1470824081

rdb_last_bgsave_status:ok

rdb_last_bgsave_time_sec:0

rdb_current_bgsave_time_sec:-1

aof_enabled:0

aof_rewrite_in_progress:0

aof_rewrite_scheduled:0

aof_last_rewrite_time_sec:-1

aof_current_rewrite_time_sec:-1

aof_last_bgrewrite_status:ok

aof_last_write_status:ok

# Stats

total_connections_received:3

total_commands_processed:113

instantaneous_ops_per_sec:0

total_net_input_bytes:4648

total_net_output_bytes:18026300

instantaneous_input_kbps:0.00

instantaneous_output_kbps:0.00

rejected_connections:0

sync_full:0

sync_partial_ok:0

sync_partial_err:0

expired_keys:0

evicted_keys:0

keyspace_hits:29

keyspace_misses:3

pubsub_channels:0

pubsub_patterns:0

latest_fork_usec:1232

migrate_cached_sockets:0

# Replication

role:master

connected_slaves:0

master_repl_offset:0

repl_backlog_active:0

repl_backlog_size:1048576

repl_backlog_first_byte_offset:0

repl_backlog_histlen:0

# CPU

used_cpu_sys:12.56

used_cpu_user:7.47

used_cpu_sys_children:0.01

used_cpu_user_children:0.00

# Cluster

cluster_enabled:0

# Keyspace

db0:keys=11,expires=0,avg_ttl=0

db1:keys=1,expires=0,avg_ttl=0

db2:keys=1,expires=0,avg_ttl=0

127.0.0.1:6379> bgrewriteaof           //异步执行一个 AOF(AppendOnly File)文件重写操作

Background append only file rewriting started

127.0.0.1:6379> bgsave                  //在后台异步保存当前数据库的数据到磁盘

Background saving started

127.0.0.1:6379> client list                //获取连接到服务器的客户端连接列表

id=4 addr=127.0.0.1:59487 fd=6 name= age=301 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

127.0.0.1:6379> command

127.0.0.1:6379> command count

127.0.0.1:6379> dbsize                //返回当数据库的key数量

(integer) 11

127.0.0.1:6379> flushall                      //删除所有数据库的所有key

127.0.0.1:6379> flushdb                      //删除当前数据库的所有key

127.0.0.1:6379> info                            //获取redis服务器的各种信息和统计数值

127.0.0.1:6379> lastsave                    //返回最近一次redis将数据保存到磁盘上的时间

127.0.0.1:6379> role                           //返回主从实例所属的角色

127.0.0.1:6379> save                         //异步保存数据到硬盘

127.0.0.1:6379> slaveof host port      //将当前服务器转变为指定服务器的从属服务器

127.0.0.1:6379> sync                         //用于复制的内部命令

127.0.0.1:6379> config get requirepass

1) "requirepass"

2) ""

127.0.0.1:6379> config set requirepass "abc123"

OK

127.0.0.1:6379> exit

[root@mysql1 src]# ./redis-cli

127.0.0.1:6379> auth "abc123"

OK

客户端最先感知阻塞等Redis超时行为,加入日志监控报警工具可快速定位阻塞问题,同事需要对Redis进程和机器做全面监控。

阻塞的内在原因:确认主线程是否存在阻塞,检查慢查询等信息,发现不合理使用API或数据结构的情况,如keys、sort、hgetall等。关注CPU使用率防止单核跑满。当硬盘IO资源紧张时,AOF追加也会阻塞主线程。

阻塞的外在原因:从CPU竞争、内存交换、网络问题等方面入手排查是否因为系统层面问题引起的阻塞。

内存使用统计:

info memory详细解释

used_memory Redis分配的内存总量

used_memory_human

used_memory_rss 从操作系统的角度显示Redis进程占用的物理内存总量

mem_fragmentation_ratio 内存碎片率,>1时,说明碎片严重。<1时,说明操作系统把Redis内存交换(Swap)到硬盘导致

内存消耗划分:

对象内存-是Redis占用最大的一块,存储着用户所有的数据

缓冲内存-客户端缓冲、复制积压缓冲区、AOF缓冲区

内存碎片

内存管理:

设置内存上限,使用maxmemory参数限制最大可用内存

动态调整内存上限,config set maxmemory 6GB

内存回收策略:删除到达过期时间的键对象,内存使用达到maxmemory上限时触发内存溢出控制策略

控制键的数量,过多的键会消耗大量内存

Redis服务端相关的更多相关文章

  1. Redis01 Redis服务端环境搭建

    1 前提准备 下载 VM centos6 安装包,安装好虚拟系统 2 安装远程连接工具 工具获取 2.1 SecureCRT.Xshell 连接远程服务器 2.2 WinSCP 向远程服务器发送文件 ...

  2. Redis 服务端程序实现原理

    上篇我们简单介绍了 redis 客户端的一些基本概念,包括其 client 数据结构中对应的相关字段的含义,本篇我们结合这些,来分析分析 redis 服务端程序是如何运行的.一条命令请求的完成,客户端 ...

  3. 一个命令让redis服务端所有信息无所遁形~(收藏吃灰系列)

    1.info命令作用 在redis客户端执行INFO 命令以便于计算机解析和人工阅读的简单格式返回有关redis服务端的所有信息和统计数据. 可选参数可用于选择特定的信息部分: Server 服务器基 ...

  4. 怎样连接REDIS服务端

    怎样连接REDIS服务端 REDIS服务器是TCP/IP SERVER,因此客户端要访问,必须先同服务器建立SOCKET连接,然后才可以发送各种REDIS COMMAND(指令). 首先要引用单元文件 ...

  5. 安装redis服务端

    1. redis服务端和客户端的安装 [root@xxx ~]# cd /usr/local/src [root@xxx src]# wget http://download.redis.io/rel ...

  6. Redis服务端的搭建(初级)

    前方低能,仅适合入门级菜鸟阅读,大神大牛通通闪开! 前言:redis经常被用来做缓存(原因自行科普),基于学习的需要自己搭建了一个redis服务器,考虑到项目的分布式部署,所以前期开始的时候,redi ...

  7. Redis 服务端配置——Could not connect to Redis at 127.0.0.1:6379: Connection refused

    [root@centoszang 桌面]# redis-cli Could : Connection refused Could : Connection refused not connected& ...

  8. windos 启动redis服务端与客户端

    服务端:1-win+R 打开命令行2-cd至redis目录,例如 G:\Redis63813-输入 redis-server.exe redis.windows.conf观察是否如图1:至此,已成功: ...

  9. 服务端相关知识学习(三)Zookeeper的配置

    前面两篇文章介绍了Zookeeper是什么和可以干什么,那么接下来我们就实际的接触一下Zookeeper这个东西,看看具体如何使用,有个大体的感受,后面再描述某些地方的时候也能在大脑中有具体的印象.本 ...

随机推荐

  1. 2016 Multi-University Training Contest 3 部分题解

    1001,只要枚举区间即可.签到题,要注意的是输入0的话也是“TAT”.不过今天补题的时候却WA了好几次,觉得奇怪.原来出现在判断条件那里,x是一个int64类型的变量,在进行(x<65536* ...

  2. javascript中的类型转换,宽松相等于严格相等

    为了将值转换为基本类型值(string,number,boolean,null,undefined),抽象操作ToPrimitive会首先检查该值有没有valueOf()方法,如果有并且返回基本类型值 ...

  3. CISCO实验记录四:备份路由器的IOS

    1.配置好TFTP服务器(假设ip为192.168.2.1) 2.查看当前IOS名称 #show version 输出中有一段:System image file is "bootflash ...

  4. 外网访问内网的FTP服务器

    转自 外网访问内网的FTP服务器 首先感谢作者给出的总结,原文是介绍Serv-U的,我针对FileZilla Server进行了稍微修改,仅看操作可直接跳到分割线后第3部分. 1. 背景简介最近研究如 ...

  5. Android跨进程通信访问其他应用程序的Activity

    访问其他应用程序的ActivityActivity既可以在进程内(同一个应用程序)访问,也可以跨进程访问.如果想在同一个应用程序中访问Activity,需要指定Context对象和Activity的C ...

  6. 图解Python 【第五篇】:面向对象-类-初级基础篇

    由于类的内容比较多,分为类-初级基础篇和类-进阶篇 类的内容总览图: 本节主要讲基础和面向对象的特性 本节内容一览图: 前言总结介绍: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 ...

  7. LC 802. Find Eventual Safe States

    In a directed graph, we start at some node and every turn, walk along a directed edge of the graph.  ...

  8. 在CentOS7阿里云服务器部署ThinkPHP5,并配置phpstrom实现同步开发(微信小程序及管理员后端)

    小程序和后端同步开发 1.服务器安装tp5框架: 方法很多比如:github.linux命令直接手动下.composer 都可以,方法很多,百度一下,不再累述 2.这时你会发现怎么都访问出现不了这个令 ...

  9. Spring Boot_打造企业级微信点餐系统_汇总贴

    2019更新版 Spring Boot双版本(1.5/2.1) 打造企业级微信点餐系统 H:\BaiDu\微服务0830\2019微服务时代Spring Boot双版本(1.5-2.1)  打造企业级 ...

  10. php+UEditor粘贴word

    最近公司做项目需要实现一个功能,在网页富文本编辑器中实现粘贴Word图文的功能. 我们在网站中使用的Web编辑器比较多,都是根据用户需求来选择的.目前还没有固定哪一个编辑器 有时候用的是UEditor ...