redis redis常用命令及内存分析总结(附RedisClient工具简介

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: redis redis常用命令及内存分析总结(附RedisClient工具简介

redis常用命令及内存分析总结(RedisClient工具简介

by:授客QQ1033553122

 


 

 

redis-cli工具

 

客户端,用于连接redis,位于 redis_install_home/bin/目录下

 

$ cd /app/redis/bin/

$ ls

redis-benchmark  redis-check-aof  redis-check-dump  redis-cli  redis-sentinel  redis-server

 

 

查看帮助

$ ./redis-cli –h 

 

连接redis数据库

$ ./redis-cli -h 10.202.40.105 -p 8080

 

$ ./redis-cli -h 10.202.40.105 -p 8080 -a admin435

 

说明:

-h 主机ip,默认是127.0.0.1

-p 端口,默认是6379

-a 密码  如果redis需要认证,但是连接时,没使用密码参数选项,即 –a <</font>密码>,进行一些操作时可能会提示需要授权认证,形如以下:

10.202.40.105:8080> info

(error) NOAUTH Authentication required.  

 

解决方法:先执行auth命令,再执行目标操作

10.202.40.105:8080> auth "your_redis_password"

10.202.40.105:8080> info

 

 

常用命令

exists key

判断key是否存在

 

.判断key shouke是否存在

10.202.40.105:8080> exists shouke

(integer) 0

 

说明:0,代表此key不存在;1代表存在。

 

set key value

设置key值为指定值valuekey是否存在不影响命令的执行

 

.设置key redistest3230的值为testvalue

10.202.40.105:8080> set redistest3230 testvalue

 

get key

获取键对应的值

 

. 获取key redistest3230的值

10.202.40.105:8080> get redistest3230

 

mget key1, key2, key3,……

一次性获取多个键对应的值

 

.一次获取redistest3230redistest3231对应的值

10.202.40.105:8080> mget redistest3230 redistest3231

1) "\xac\xed\x00\x05sr\x00\x13java.util.ArrayListx\x81\xd2\x1d\x99\xc7a\x9d\x03\x00\x01I\x00\x04sizexp\x00\x00\x00\x00w\x04\x00\x00\x00\x00x"

2) "\xac\xed\x00\x05sr\x00\x13java.util.ArrayListx\x81\xd2\x1d\x99\xc7a\x9d\x03\x00\x01I\x00\x04sizexp\x00\x00\x00\x00w\x04\x00\x00\x00\x00x"

 

del key

删除键及对应的值

 

. 删除键redistest3230及对应值

10.202.40.105:8080> del redistest3230 

 

keys *

获取所有键

10.202.40.105:8080> keys *

1) "ddt:pf:msg:pushed:186176"

2) "ddt:industry:pfce:190339:1"

3) "ddt:pf:msg:pushed:190109"

4) "ddt:pf:msg:pushed:189437"

 

flushdb

命令用于清空当前数据库中的所有 key

10.202.40.105:8080> flushdb

OK

 

quit

退出

10.202.40.105:8080> quit

 

info

查看redis相关的一些统计信息,如cpu,内存信息等

 

10.202.40.105:8080> info

# Server

redis_version:2.8.19

redis_git_sha1:00000000

redis_git_dirty:0

redis_build_id:227b3426abec2acc

redis_mode:standalone

os:Linux 2.6.32-504.el6.x86_64 x86_64

arch_bits:64

multiplexing_api:epoll

gcc_version:4.4.7

process_id:32916

run_id:d62082b420aa1f25f137b31d9adbfe4c09f0147f

tcp_port:8080

uptime_in_seconds:267069

uptime_in_days:3

hz:10

lru_clock:1923941

config_file:/app/redis/conf/DDT_CORE_CNSZ22_REDIS_CACHE_SVR_01.conf

 

# Clients

connected_clients:15

client_longest_output_list:0

client_biggest_input_buf:0

blocked_clients:0

 

# Memory

used_memory:12499240

used_memory_human:11.92M

used_memory_rss:21557248

used_memory_peak:31953152

used_memory_peak_human:30.47M

used_memory_lua:35840

mem_fragmentation_ratio:1.72

mem_allocator:jemalloc-3.6.0

 

# Persistence

loading:0

rdb_changes_since_last_save:553

rdb_bgsave_in_progress:0

rdb_last_save_time:1495096122

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:1136

total_commands_processed:2337688

instantaneous_ops_per_sec:41

total_net_input_bytes:270205795

total_net_output_bytes:849151967

instantaneous_input_kbps:7.80

instantaneous_output_kbps:17.89

rejected_connections:0

sync_full:1

sync_partial_ok:0

sync_partial_err:0

expired_keys:13924

evicted_keys:0

keyspace_hits:111573

keyspace_misses:210756

pubsub_channels:1

pubsub_patterns:0

latest_fork_usec:864

 

# Replication

role:master

connected_slaves:1

slave0:ip=10.202.40.107,port=8080,state=online,offset=222468069,lag=1

master_repl_offset:222474508

repl_backlog_active:1

‭‭ 2017/5/18 21:00:01

repl_backlog_size:1048576

repl_backlog_first_byte_offset:221425933

repl_backlog_histlen:1048576

 

# CPU

used_cpu_sys:197.87

used_cpu_user:158.20

used_cpu_sys_children:3.28

used_cpu_user_children:13.11

 

# Keyspace

db0:keys=13332,expires=13332,avg_ttl=82839728

10.202.40.105:8080>

 

内存分析

# Memory

used_memory:30644632  //redis分配器分配的,数据占用的内存大小(字节为单位),网上说是Redis实例中所有key及其value占用的内存大小,即个人理解,应该说主要是实例中所有key及其value占用的内存大小,因为即便执行flushdb命令,该参数仍不为0

 

used_memory_human:29.22M //used_memory,使用M为单位,更易读

 

used_memory_rss:38871040 // 操作系统分配给redis物理内存大小(字节为单位,包括内存碎片),这个值和 top ps 等命令的输出一致。

 

used_memory_peak:30774512 //redis使用的内存峰值(字节为单位,包括虚拟内存)

 

used_memory_peak_human:29.35M //used_memory_peak,使用M为单位,更易读

 

used_memory_lua:35840  // Lua 引擎所使用的内存大小(以字节为单位)

 

mem_fragmentation_ratio:1.27 //内存碎片比率:used_memory_rss/ used_memory mem_fragmentation_ratio小于1,表示redis已使用swap分区

 

mem_allocator:jemalloc-3.6.0 //在编译时指定的, Redis 所使用的内存分配器。可以是 libc jemalloc 或者 tcmalloc

 

总的来说

1 used_memory_rss 的值通常会比 used_memory 稍微高一点,因为有内存碎片。

 

2) 当used_memory_rss > used_memory_peak,且两者的值相差较大时,表示存在内存碎片。

 

3) 当used_memory_rss < used_memory_peak,表示操作系统给redis分配的物理内存不足,redis使用了交换内存

 

客户端连接分析

# Clients

connected_clients:15 //已连接客户端的数量(不包括通过从属服务器连接的客户端)

 

client_longest_output_list:0 //当前连接的客户端当中,最长的输出列表

 

client_biggest_input_buf:0  //当前连接的客户端当中,最大输入缓存

 

blocked_clients:0 //正在等待阻塞命令(BLPOPBRPOPBRPOPLPUSH)的客户端的数量

 

RedisClient简介

如图 Server –> Add,填写redis数据库用户名,主机,端口,密码

 

结果如下

 

 

 

 

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
1月前
|
Web App开发 监控 JavaScript
监控和分析 JavaScript 内存使用情况
【10月更文挑战第30天】通过使用上述的浏览器开发者工具、性能分析工具和内存泄漏检测工具,可以有效地监控和分析JavaScript内存使用情况,及时发现和解决内存泄漏、过度内存消耗等问题,从而提高JavaScript应用程序的性能和稳定性。在实际开发中,可以根据具体的需求和场景选择合适的工具和方法来进行内存监控和分析。
|
1月前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
415 6
|
24天前
|
NoSQL 算法 Redis
redis内存淘汰策略
Redis支持8种内存淘汰策略,包括noeviction、volatile-ttl、allkeys-random、volatile-random、allkeys-lru、volatile-lru、allkeys-lfu和volatile-lfu。这些策略分别针对所有键或仅设置TTL的键,采用随机、LRU(最近最久未使用)或LFU(最少频率使用)等算法进行淘汰。
39 5
|
29天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
62 1
|
1月前
|
JavaScript
如何使用内存快照分析工具来分析Node.js应用的内存问题?
需要注意的是,不同的内存快照分析工具可能具有不同的功能和操作方式,在使用时需要根据具体工具的说明和特点进行灵活运用。
44 3
|
1月前
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
|
1月前
|
Web App开发 JavaScript 前端开发
使用 Chrome 浏览器的内存分析工具来检测 JavaScript 中的内存泄漏
【10月更文挑战第25天】利用 Chrome 浏览器的内存分析工具,可以较为准确地检测 JavaScript 中的内存泄漏问题,并帮助我们找出潜在的泄漏点,以便采取相应的解决措施。
312 9
|
1月前
|
缓存 Prometheus 监控
Elasticsearch集群JVM调优设置合适的堆内存大小
Elasticsearch集群JVM调优设置合适的堆内存大小
298 1
|
24天前
|
存储 监控 算法
深入探索Java虚拟机(JVM)的内存管理机制
本文旨在为读者提供对Java虚拟机(JVM)内存管理机制的深入理解。通过详细解析JVM的内存结构、垃圾回收算法以及性能优化策略,本文不仅揭示了Java程序高效运行背后的原理,还为开发者提供了优化应用程序性能的实用技巧。不同于常规摘要仅概述文章大意,本文摘要将简要介绍JVM内存管理的关键点,为读者提供一个清晰的学习路线图。
|
1月前
|
Java
JVM内存参数
-Xmx[]:堆空间最大内存 -Xms[]:堆空间最小内存,一般设置成跟堆空间最大内存一样的 -Xmn[]:新生代的最大内存 -xx[use 垃圾回收器名称]:指定垃圾回收器 -xss:设置单个线程栈大小 一般设堆空间为最大可用物理地址的百分之80