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数据库实现在线游戏中的游戏玩家积分排行榜功能。
目录
相关文章
|
运维 NoSQL 测试技术
Redis:内存陡增100%深度复盘
本文深度分析了Redis内存陡增100%的一些细节和解决方案。
211 1
Redis:内存陡增100%深度复盘
|
4月前
|
存储 缓存 监控
Redis设计与实现——Redis命令参考与高级特性
Redis 是一个高性能的键值存储系统,支持丰富的数据类型(字符串、列表、哈希、集合等)和多种高级功能。本文档涵盖 Redis 的核心命令分类,包括数据类型操作、事务与脚本、持久化、集群管理、系统监控等。特别介绍了事务的原子性特性、Lua 脚本的执行方式及优势、排序机制、发布订阅模型以及慢查询日志和监视器工具的使用方法。适用于开发者快速掌握 Redis 常用命令及其应用场景,优化系统性能与可靠性。
|
3月前
|
存储 监控 NoSQL
流量洪峰应对术:Redis持久化策略与内存压测避坑指南
本文深入解析Redis持久化策略与内存优化技巧,涵盖RDB快照机制、AOF重写原理及混合持久化实践。通过实测数据揭示bgsave内存翻倍风险、Hash结构内存节省方案,并提供高并发场景下的主从复制冲突解决策略。结合压测工具链构建与故障恢复演练,总结出生产环境最佳实践清单。
107 9
|
4月前
|
缓存 Linux 数据安全/隐私保护
Linux环境下如何通过手动调用drop_caches命令释放内存
总的来说,记录住“drop_caches” 命令并理解其含义,可以让你在日常使用Linux的过程中更加娴熟和自如。
944 23
|
4月前
|
存储 缓存 NoSQL
Redis中的常用命令-get&set&keys&exists&expire&ttl&type的详细解析
总的来说,这些Redis命令提供了处理存储在内存中的键值对的便捷方式。通过理解和运用它们,你可以更有效地在Redis中操作数据,使其更好地服务于你的应用。
329 17
|
4月前
|
消息中间件 NoSQL Linux
Redis的基本介绍和安装方式(包括Linux和Windows版本),以及常用命令的演示
Redis(Remote Dictionary Server)是一个高性能的开源键值存储数据库。它支持字符串、列表、散列、集合等多种数据类型,具有持久化、发布/订阅等高级功能。由于其出色的性能和广泛的使用场景,Redis在应用程序中常作为高速缓存、消息队列等用途。
812 16
|
4月前
|
JSON NoSQL Redis
在Rocky9系统上安装并使用redis-dump和redis-load命令的指南
以上步骤是在Rocky9上使用redis-dump和redis-load命令顺利出行的秘籍。如果在实行的过程中,发现了新的冒险和挑战,那么就像一个勇敢的航海家,本着探索未知的决心,解决问题并前进。
123 14
|
4月前
|
消息中间件 NoSQL Unix
Redis的基本特性以及其基础命令用法
这只是冰山一角,Redis的强大功能和简洁的操作方法值得我们深入了解和掌握,是复杂数据问题解决的有力工具。所以,来一场有趣的Redis冒险吧!
155 6
|
3月前
|
存储 Ubuntu Linux
内存卡格式化必看!4个格式化工具与注意事项
今天就给大家推荐几款经过实测的内存卡格式化工具,它们不仅使用简单、支持多种格式,而且在修复损坏卡方面也表现稳定,是实用性与安全性兼具的好帮手。
|
6月前
|
存储 缓存 算法
JVM简介—1.Java内存区域
本文详细介绍了Java虚拟机运行时数据区的各个方面,包括其定义、类型(如程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区和直接内存)及其作用。文中还探讨了各版本内存区域的变化、直接内存的使用、从线程角度分析Java内存区域、堆与栈的区别、对象创建步骤、对象内存布局及访问定位,并通过实例说明了常见内存溢出问题的原因和表现形式。这些内容帮助开发者深入理解Java内存管理机制,优化应用程序性能并解决潜在的内存问题。
308 29
JVM简介—1.Java内存区域