【redis使用全解析】常见运维操作
作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/
1.1 启动
1.1.1 启动redis
$ redis-server redis.conf
常见选项:
./redis-server (run the server with default conf)
./redis-server /etc/redis/6379.conf
./redis-server --port 7777
./redis-server --port 7777 --slaveof 127.0.0.1 8888
./redis-server /etc/myredis.conf --loglevel verbose
1.1.2 启动redis-sentinel
./redis-server /etc/sentinel.conf –sentinel
./redis-sentinel /etc/sentinel.conf
部署后可以使用sstart对redis 和sentinel进行拉起,使用sctl进行supervisorctl的控制。(两个alias)
1.2 停止
redis-cli shutdown
sentinel方法一样,只是需要执行sentinel的连接端口
1.3 探测服务是否可用
127.0.0.1:6379> ping
返回PONG说明正常
1.4 监控redis请求执行信息
在cli下执行monitor,生产环境慎用。
1.5 查看redis数据库统计信息
在cli下执行info
相关含义:
Mrds:6379> info # Server redis_version:2.8.19 ###redis版本号 redis_git_sha1:00000000 ###git SHA1 redis_git_dirty:0 ###git dirty flag redis_build_id:78796c63e58b72dc redis_mode:standalone ###redis运行模式 os:Linux 2.6.32-431.el6.x86_64 x86_64 ###os版本号 arch_bits:64 ###64位架构 multiplexing_api:epoll ###调用epoll算法 gcc_version:4.4.7 ###gcc版本号 process_id:25899 ###服务器进程PID run_id:eae356ac1098c13b68f2b00fd7e1c9f93b1c6a2c ###Redis的随机标识符(用于sentinel和集群) tcp_port:6379 ###Redis监听的端口号 uptime_in_seconds:6419 ###Redis运行时长(s为单位) uptime_in_days:0 ###Redis运行时长(天为单位) hz:10 lru_clock:10737922 ###以分钟为单位的自增时钟,用于LRU管理 config_file:/etc/redis/redis.conf ###redis配置文件 # Clients connected_clients:1 ###已连接客户端的数量(不包括通过从属服务器连接的客户端) client_longest_output_list:0 ###当前连接的客户端中最长的输出列表 client_biggest_input_buf:0 ###当前连接的客户端中最大的输出缓存 blocked_clients:0 ###正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量 需监控 # Memory used_memory:2281560 ###由 Redis 分配器分配的内存总量,以字节(byte)为单位 used_memory_human:2.18M ###以更友好的格式输出redis占用的内存 used_memory_rss:2699264 ###从操作系统的角度,返回 Redis 已分配的内存总量(俗称常驻集大小)。这个值和 top 、 ps 等命令的输出一致 used_memory_peak:22141272 ### Redis 的内存消耗峰值(以字节为单位) used_memory_peak_human:21.12M ###以更友好的格式输出redis峰值内存占用 used_memory_lua:35840 ###LUA引擎所使用的内存大小 mem_fragmentation_ratio:1.18 ###used_memory_rss 和 used_memory 之间的比率 mem_allocator:jemalloc-3.6.0 ###在理想情况下, used_memory_rss 的值应该只比 used_memory 稍微高一点儿。当 rss > used ,且两者的值相差较大时,表示存在(内部或外部的)内存碎片。内存碎片的比率可以通过 mem_fragmentation_ratio 的值看出。 当 used > rss 时,表示 Redis 的部分内存被操作系统换出到交换空间了,在这种情况下,操作可能会产生明显的延迟。 # Persistence loading:0 ###记录服务器是否正在载入持久化文件 rdb_changes_since_last_save:0 ###距离最近一次成功创建持久化文件之后,经过了多少秒 rdb_bgsave_in_progress:0 ###记录了服务器是否正在创建 RDB 文件 rdb_last_save_time:1420023749 ###最近一次成功创建 RDB 文件的 UNIX 时间戳 rdb_last_bgsave_status:ok ###最近一次创建 RDB 文件的结果是成功还是失败 rdb_last_bgsave_time_sec:0 ###最近一次创建 RDB 文件耗费的秒数 rdb_current_bgsave_time_sec:-1 ###如果服务器正在创建 RDB 文件,那么这个域记录的就是当前的创建操作已经耗费的秒数 aof_enabled:1 ###AOF 是否处于打开状态 aof_rewrite_in_progress:0 ###服务器是否正在创建 AOF 文件 aof_rewrite_scheduled:0 ###RDB 文件创建完毕之后,是否需要执行预约的 AOF 重写操作 aof_last_rewrite_time_sec:-1 ###最近一次创建 AOF 文件耗费的时长 aof_current_rewrite_time_sec:-1 ###如果服务器正在创建 AOF 文件,那么这个域记录的就是当前的创建操作已经耗费的秒数 aof_last_bgrewrite_status:ok ###最近一次创建 AOF 文件的结果是成功还是失败 aof_last_write_status:ok aof_current_size:176265 ###AOF 文件目前的大小 aof_base_size:176265 ###服务器启动时或者 AOF 重写最近一次执行之后,AOF 文件的大小 aof_pending_rewrite:0 ###是否有 AOF 重写操作在等待 RDB 文件创建完毕之后执行 aof_buffer_length:0 ###AOF 缓冲区的大小 aof_rewrite_buffer_length:0 ###AOF 重写缓冲区的大小 aof_pending_bio_fsync:0 ###后台 I/O 队列里面,等待执行的 fsync 调用数量 aof_delayed_fsync:0 ###被延迟的 fsync 调用数量 # Stats total_connections_received:8466 ###服务器已接受的连接请求数量 total_commands_processed:900668 ###服务器已执行的命令数量 instantaneous_ops_per_sec:1 ###服务器每秒钟执行的命令数量 total_net_input_bytes:82724170 total_net_output_bytes:39509080 instantaneous_input_kbps:0.07 instantaneous_output_kbps:0.02 rejected_connections:0 ###因为最大客户端数量限制而被拒绝的连接请求数量 sync_full:2 sync_partial_ok:0 sync_partial_err:0 expired_keys:0 ###因为过期而被自动删除的数据库键数量 evicted_keys:0 ###因为最大内存容量限制而被驱逐(evict)的键数量。 keyspace_hits:0 ###查找数据库键成功的次数。 keyspace_misses:500000 ###查找数据库键失败的次数。 pubsub_channels:0 ###目前被订阅的频道数量 pubsub_patterns:0 ###目前被订阅的模式数量 latest_fork_usec:402 ###最近一次 fork() 操作耗费的毫秒数 # Replication role:master ###如果当前服务器没有在复制任何其他服务器,那么这个域的值就是 master ;否则的话,这个域的值就是 slave 。注意,在创建复制链的时候,一个从服务器也可能是另一个服务器的主服务器 connected_slaves:2 ###2个slaves slave0:ip=192.168.65.130,port=6379,state=online,offset=1639,lag=1 slave1:ip=192.168.65.129,port=6379,state=online,offset=1639,lag=0 master_repl_offset:1639 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:2 repl_backlog_histlen:1638 # CPU used_cpu_sys:41.87 ###Redis 服务器耗费的系统 CPU used_cpu_user:17.82 ###Redis 服务器耗费的用户 CPU used_cpu_sys_children:0.01 ###后台进程耗费的系统 CPU used_cpu_user_children:0.01 ###后台进程耗费的用户 CPU # Keyspace db0:keys=3101,expires=0,avg_ttl=0 ###keyspace 部分记录了数据库相关的统计信息,比如数据库的键数量、数据库已经被删除的过期键数量等。对于每个数据库,这个部分都会添加一行以下格式的信息 |
只看其中一部分:info Replication
重新统计:config resetstat
1.6 查看和修改配置
查看:
config get :获取服务器配置信息。
redis 127.0.0.1:6379> config get dir
config get *:查看所有配置
修改:
临时设置:config set
永久设置:config rewrite,将目前服务器的参数配置写入redis conf.
1.7 批量执行操作
使用telnet也可以连接redis-server。并且在脚本中使用nc命令进行redis操作也是很有效的:
gnuhpc@gnuhpc:~$ (echo -en "ping\r\nset key abc\r\nget key\r\n";sleep 1) | nc 127.0.0.1 6379 +PONG +OK $3 abc |
另一个方式是使用pipeline:
在一个脚本中批量执行多个写入操作: 先把插入操作放入操作文本insert.dat: set a b set 1 2 set h w set f u 然后执行命令:cat insert.bat | ./redis-cli --pipe,或者如下脚本: #!/bin/sh host=$1 port=$; password=$3 cat insert.dat | ./redis-cli -h $host -p $port -a $password --pipe |
1.8 选择数据库
select db-index,默认连接的数据库所有是0,默认数据库数是16个。返回1表示成功,0失败
1.9 清空数据库
flushdb:删除当前选择数据库中的所有 key。生产上已经禁止。
flushall: 删除所有的数据库。生产上已经禁止。
1.10 模拟宕机
redis-cli debug segfault
1.11 模拟hang
redis-cli -p 6379 DEBUG sleep 30
1.12 重命名命令
rename-command,例如:rename-command FLUSHALL ""。必须重启。
1.13 执行lua脚本
- -eval 。例如:
redis-cli --eval myscript.lua key1 key2 , arg1 arg2 arg3
1.14 设置密码
config set requirepass [passw0rd]
1.15 验证密码
auth passw0rd
1.16 性能测试命令
redis-benchmark -n 100000
1.17 获取慢查询
SLOWLOG GET 10
结果为查询ID、发生时间、运行时长和原命令
1.18 查看日志
日志位置在/redis/log下,redis.log为redis主日志,sentinel.log为sentinel监控日志。
1.19 Redis-cli命令行其他操作
1. echo :在命令行打印一些内容
redis 127.0.0.1:6379> echo HongWan
"HongWan"
2. quit :退出连接。
redis 127.0.0.1:6379> quit
3. -x选项从标准输入(stdin)读取最后一个参数。 比如从管道中读取输入:
echo -en "chen.qun" | redis-cli -x set name
4. -r -i
-r 选项重复执行一个命令指定的次数。
-i 设置命令执行的间隔。
比如查看redis每秒执行的commands(qps)
redis-cli -r 100 -i 1 info stats | grep instantaneous_ops_per_sec
5. -c:开启reidis cluster模式,连接redis cluster节点时候使用。
6. --rdb:获取指定redis实例的rdb文件,保存到本地。
redis-cli -h 192.168.44.16 -p 6379 --rdb 6379.rdb
7. --slave
模拟slave从master上接收到的commands。slave上接收到的commands都是update操作,记录数据的更新行为。
8. - -pipe
这个一个非常有用的参数。发送原始的redis protocl格式数据到服务器端执行。比如下面的形式的数据(linux服务器上需要用unix2dos转化成dos文件)。
linux下默认的换行是\n,windows系统的换行符是\r\n,redis使用的是\r\n.
echo -en '*3\r\n$3\r\nSET\r\n$3\r\nkey\r\n$5\r\nvalue\r\n' | redis-cli --pipe
作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/
【redis使用全解析】常见运维操作的更多相关文章
- Linux内存运维操作及常用命令
Linux内存运维操作及常用命令 1.问题诊断 1.1 什么是 Linux 服务器 Load Average? 1.2如何查看 Linux 服务器负载? 1.3服务器负载高怎么办? 1.4如何查看服务 ...
- rabbitmq常见运维命令和问题总结
常见运维命令作用: yum安装erlang的环境配置: ERLANG_HOME=/usr/lib64/erlang export PATH=$PATH:$ERLANG_HOME/bin 常见rabbi ...
- Redis 相关运维操作
背景 Redis作为目前全球最流行的KV存储,除了使用之外,还需要做好日常的运维工作.关于运维相关的工作,本文从以下方面进行介绍说明(Redis5.0以上): 内存方面 客户端连接方面 工具方面 说明 ...
- Redis 之江湖遇险-复制运维及优化
一. 前言 上一篇Redis 之深入江湖-复制原理中说了复制的原理,那么在理解复制原理之后,还要知道在这复制功能的背后,还有哪些坑要注意一下,毕竟坑是要跳过去的,而不是跳进去的. 二. 读写分离的一些 ...
- 2015年br运维操作归档
归档2015年在br做运维时常用的命令,主要梳理出log的过滤操作. 对于日志文本的处理,常见还是sed和awk,具体如下: 统计ip访问量: cat nginx.log |awk '{print $ ...
- 10大HBase常见运维工具整理
摘要:HBase自带许多运维工具,为用户提供管理.分析.修复和调试功能.本文将列举一些常用HBase工具,开发人员和运维人员可以参考本文内容,利用这些工具对HBase进行日常管理和运维. HBase组 ...
- linux常见运维题
linux运维题 一.填空题 1. 在Linux 系统 中,以文件方式访问设备 . (linux下一切都是文件) 2. Linux 内核引导时,从文件/etc/fstab中读取要加载的文件系统 . ( ...
- WebLogic11g-常用运维操作
转:http://www.codeweblog.com/weblogic11g-%e5%b8%b8%e7%94%a8%e8%bf%90%e7%bb%b4%e6%93%8d%e4%bd%9c/ 希望这篇 ...
- Hadoop运维操作
1. 处理hadoop的namenode宕机 处理措施: 进入hadoop的bin目录,重启namenode服务 操作命令: cd path/to/hadoop/bin ./hadoop-d ...
随机推荐
- MixItUp:超炫!基于 CSS3 & jQuery 的过滤和排序插件
MixItUp 是一款轻量,但功能强大的 jQuery 插件,提供了对分类和有序内容的美丽的动画过滤和排序功能.特别适合用于作品集网站,画廊,图片博客以及任何的分类或有序内容. 它是如何工作的? Mi ...
- TwentyTwenty – 使用 jQuery 实现图片对比功能
这是一款非常棒的图片对比工具,能够方便的应用到你的网站中.其基本思路是把两张图片层叠在一起,当你拖动滑竿的时候,利用 CSS clip 裁剪图片,进行形成视觉对比效果. 您可能感兴趣的相关文章 Met ...
- 用node-webkit把web应用打包成桌面应用
node-webkit是一个Chromium和node.js上的结合体,通过它我们可以把建立在chrome浏览器和node.js上的web应用打包成桌面应用,而且还可以跨平台的哦.很显然比起传统的桌面 ...
- 浅谈-js递归函数
所谓的递归函数就是在函数体内调用本函数.使用递归函数一定要注意,处理不当就会进入死循环.递归函数只有在特定的情况下使用 ,比如阶乘问题 下面我们就做一个10以内的阶乘试试看吧: [Ctrl+A 全选 ...
- 原创QQ影音DLL劫持漏洞+动画实战教程
1.什么是DLL DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,是软件文件类型.在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成 ...
- Android 视频播放器,在线播放
1. Bilibili https://github.com/Bilibili/ijkplayer 1.测试的时候总是崩溃,不知道是我不会用还是怎么回事. 2016-04-15 2.AndroidVi ...
- 【代码笔记】iOS-iCarouselDemo
一,效果图. 二,工程图. 三,代码. RootViewController.h RootViewController.m myCell.h #import <UIKit/UIKit.h> ...
- 自己用js写的日历(在考勤中使用,显示员工的日期的考勤情况)
1.HTML部分 <div id="AttendanceDataDetailDiv"> <div class="A_close"> &l ...
- UITableView全面解析
本文转自:http://www.cocoachina.com/ios/20140922/9710.html 在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以 ...
- vs 只能没有智能提示的解决方法
我vs今天出现一点比较诡异的情况,莫名奇妙就不能自动生成我拖的控件的后端代码了(****.aspx.designer.cs) 我在网上找了下,找到一个解决方法,这里把解决方法贴下来. 网上解决方法的出 ...