项目研发过程中,用到Python操作Redis场景,记录学习过程中的心得体会。
一、环境搭建
- Windows + Anaconda3
- 安装
redis
第3方包,pip install -u redis
pip install -u # 升级安装
- linux下查看redis配置信息
bind 127.0.0.1 # 表示只允许本地访问,无法远程连接 bind 0.0.0.0 # 表示任何ip都可以访问protected-mode yes # 保护模式,只允许本地链接 protected-mode no # 保护模式关闭 daemonize yes # 开启守护进程模式。单进程多线程模式,redis在后台运行。 daemonize no # redis命令行界面,exit强制退出或关闭连接都会导致redis进程退出
- 配置示例
- 查找
redis.conf
文件路径位置,find / -name 'redis.conf'
- 查看
redis.conf
文件,vim redis.conf
- 查找
二、代码实现
1、StrictRedis vs Redis
- StrictRedis用于实现大部分官方的命令,并使用官方语法和命令;
- Redis是StrictRedis的子类,用于向后兼容旧版本的redis-py;
- 官方推荐使用StrictRedis方法。
2、 实验代码
import redisr = redis.Redis(host='10.xx.xx.201', port=7019,decode_responses=True, password='********')
mmj = r.info('Memory')
# result / r.execute_command('info Memory')used_memory = mmj.get('used_memory')
maxmemory = mmj.get('maxmemory')used_memory_human = mmj.get('used_memory_human')
maxmemory_human = mmj.get('maxmemory_human')
left_mem_ratio = (maxmemory - used_memory)*1.0/maxmemory
三、redis info
- Redis commands info 官方指南
1、memory
信息项 | 解释 |
---|---|
used_memory | 由Redis分配器分配的内存总量,包含redis进程内部的开销和数据占用的内存,以字节为单位 |
used_memory_human | 更直观展示分配的内存总量。 |
used_memory_rss | 向os申请的内存大小。与 top 、 ps等命令的输出一致。 |
used_memory_rss_human | 更直观展示向os申请的内存大小。 |
used_memory_peak | redis的内存消耗峰值(以字节为单位) |
used_memory_peak_human | 更直观返回redis的内存消耗峰值 |
used_memory_peak_perc | 使用内存达到峰值内存的百分比,即(used_memory/ used_memory_peak) *100% |
used_memory_overhead | Redis为了维护数据集的内部机制所需的内存开销,包括所有客户端输出缓冲区、查询缓冲区、AOF重写缓冲区和主从复制的backlog。 |
used_memory_startup | Redis服务器启动时消耗的内存 |
used_memory_dataset | 数据占用的内存大小,即used_memory-sed_memory_overhead |
used_memory_dataset_perc | 数据占用的内存大小的百分比,100%*(used_memory_dataset/(used_memory-used_memory_startup)) |
total_system_memory | 整个系统内存 |
total_system_memory_human | 以更直观的格式显示整个系统内存 |
used_memory_lua | Lua脚本存储占用的内存 |
used_memory_lua_human | 以更直观的格式显示Lua脚本存储占用的内存 |
maxmemory | Redis实例的最大内存配置 |
maxmemory_human | 以更直观的格式显示Redis实例的最大内存配置 |
maxmemory_policy | 当达到maxmemory时的淘汰策略 |
mem_fragmentation_ratio | 碎片率,used_memory_rss/ used_memory |
mem_allocator | 内存分配器 |
active_defrag_running | 表示没有活动的defrag任务正在运行,1表示有活动的defrag任务正在运行(defrag:表示内存碎片整理) |
lazyfree_pending_objects | 0表示不存在延迟释放的挂起对象 |