全局命令:

查看所有键:

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. 4 LinkedList

    1 LinkedList public class LinkedList<E> extends AbstractSequentialList<E> implements Lis ...

  2. Linux编程之recvmsg和sendmsg函数

    recvmsg 和 sendmsg 函数 #include <sys/types.h> #include <sys/socket.h> ssize_t send(int soc ...

  3. How to delete System Profiles for those registered with Red Hat Subscription Management (RHSM)?

    Environment Red Hat Customer Portal Certificate Based Subscription Red Hat Subscription Management ( ...

  4. mysql的启动问题

    用cmd启动MySQL   (net start mysql )时出现(发生系统错误 5.  拒绝访问)这样的错误是因为cmd 权限太低了需要提高cmd权限才行(即使管理员权限) 如下图cmd所示: ...

  5. javascript对象属性和数组的访问

    javascript对象属性的访问 假如有对象test:var test = {  "a":1,  "b":2};直接访问对象test的属性a的值,有两种方法: ...

  6. Kotlin函数中默认参数

    Java不支持默认参数.但kotlin函数却可以 package loaderman.demo class Customer(var name:String ="name"){// ...

  7. vue指令实现拖动的高级写法

    不熟悉vue自定义指令看这里: https://cn.vuejs.org/v2/guide/custom-directive.html vue指令实现拖动方法很方便也挺简单,但是网上大部分的教程代码, ...

  8. python中学习K-Means和图片压缩

    python中学习K-Means和图片压缩 大家在学习python中,经常会使用到K-Means和图片压缩的,我们在此给大家分享一下K-Means和图片压缩的方法和原理,喜欢的朋友收藏一下吧. 通俗的 ...

  9. Spring-Kafka —— KafkaListener禁止自启动

    应用服务启动时,KafkaListener默认会自动启动进行消费,如果想不自动消费,可以设置AutoStartup属性值为false @Override @KafkaListener(id = Con ...

  10. Java集合(4):未获支持的操作及UnsupportedOperationException

    执行各种添加和移除的方法在Collection中都是可选操作的,这意味着实现类并不需要为这些方法提供实现.当我们调用这些方法时,将不会执行有意义的行为,而是通常抛出UnsupportedOperati ...