Redis服务端相关
全局命令:
查看所有键:
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服务端相关的更多相关文章
- Redis01 Redis服务端环境搭建
1 前提准备 下载 VM centos6 安装包,安装好虚拟系统 2 安装远程连接工具 工具获取 2.1 SecureCRT.Xshell 连接远程服务器 2.2 WinSCP 向远程服务器发送文件 ...
- Redis 服务端程序实现原理
上篇我们简单介绍了 redis 客户端的一些基本概念,包括其 client 数据结构中对应的相关字段的含义,本篇我们结合这些,来分析分析 redis 服务端程序是如何运行的.一条命令请求的完成,客户端 ...
- 一个命令让redis服务端所有信息无所遁形~(收藏吃灰系列)
1.info命令作用 在redis客户端执行INFO 命令以便于计算机解析和人工阅读的简单格式返回有关redis服务端的所有信息和统计数据. 可选参数可用于选择特定的信息部分: Server 服务器基 ...
- 怎样连接REDIS服务端
怎样连接REDIS服务端 REDIS服务器是TCP/IP SERVER,因此客户端要访问,必须先同服务器建立SOCKET连接,然后才可以发送各种REDIS COMMAND(指令). 首先要引用单元文件 ...
- 安装redis服务端
1. redis服务端和客户端的安装 [root@xxx ~]# cd /usr/local/src [root@xxx src]# wget http://download.redis.io/rel ...
- Redis服务端的搭建(初级)
前方低能,仅适合入门级菜鸟阅读,大神大牛通通闪开! 前言:redis经常被用来做缓存(原因自行科普),基于学习的需要自己搭建了一个redis服务器,考虑到项目的分布式部署,所以前期开始的时候,redi ...
- 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& ...
- windos 启动redis服务端与客户端
服务端:1-win+R 打开命令行2-cd至redis目录,例如 G:\Redis63813-输入 redis-server.exe redis.windows.conf观察是否如图1:至此,已成功: ...
- 服务端相关知识学习(三)Zookeeper的配置
前面两篇文章介绍了Zookeeper是什么和可以干什么,那么接下来我们就实际的接触一下Zookeeper这个东西,看看具体如何使用,有个大体的感受,后面再描述某些地方的时候也能在大脑中有具体的印象.本 ...
随机推荐
- LIUNX 安装 nginx
安装依赖 yum install gcc yum install pcre-devel yum install zlib zlib-devel yum install openssl openssl- ...
- node和npm版本引起的安装依赖和运行项目失败问题
问题:node版本不同导致的安装依赖版本不同而无法启动 https://www.jianshu.com/p/c07293c8c6d4 实际上问题分为两个部分: 1,npm包管理器安装依赖不成功,此时需 ...
- Linux 删除文件夹和文件的命令(强制删除包括非空文件)
linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm -rf命令即可.直接rm就可以了,不过要加两个参数-rf 即:rm -rf 目录名字-r 就 ...
- 索引有B+索引和hash索引,各自的区别
Hash索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B+树索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,那为什么大家不都用Hash索引而还要使用B+树索引呢? ...
- python位运算版的算术四则运算
#!/usr/bin/python # -*- coding: utf-8 -*- class ElementOperator: def add(self, num1, num2): # 32bits ...
- java调用exe,及调用bat不成功的解决办法
开门见山的说,文件目录如下 想调用123.exe,但是尝试了几次调用不到,然后写了个bat.初始内容如下 @echo off D: cd test "123.exe" 双击可以运行 ...
- ESXi 5.1 识别GPT问题
使用paredUtil命令 partedUtil mklabel /dev/disks/eui.227c000155707e0b msdospartedUtil mklabel /dev/disks/ ...
- 安装nodejs 后运行 npm 命令无响应
安装和卸载过nodejs, 也编辑过 C:\Users\{账户}\下的.npmrc文件. 再全新安装nodejs ,运行npm 命令,无响应. 处理方法,删除C:\Users\{账户}\下的.npmr ...
- Selenium 2自动化测试实战35(HTML测试报告)
HTML测试报告 显然,一份漂亮的测试报告展示自动化测试成果只有一个简单的log文件是不够的.HTMLTestRunner是python标准库unittest单元测试框架的一个扩展,它生成易于使用的H ...
- Spring策略模式的实现
场景: 有时候一个业务方法有多个实现类,需要根据特定的情形进行业务处理. 例如:商店支付,我们可以使用支付宝.微信扫描农行.xxx行的快捷支付(而不是微信支付.支付宝支付二维码)购买商品. 实现代码( ...