redis内存优化方法
先来认识2个redis配置参数
hash-max-ziplist-entries : hash内部编码压缩列表的最大值,默认512
hash-max-zipmap-value : hash内部编码压缩列表单个key的最大值,默认64字节。
这是hash的配置,list,set,zset也有类似的配置参数。
先说结论:总结redis节约内存的方法。
1,使用对象共享池优化小整数对象。
2,数据优先使用整数,比字符串更节省空间。
3,操作优化。尽量避免字符串的追加操作,因为字符串存在预分配机制。追加操作后字符串对象会分配一倍的容量作为于预留空间。
4,编码优化。list,hash,set,zset尽可能使用ziplist编码。好处是内存下降,坏处是操作变慢。一般大小不超过1000。
5,控制键的数量,100万idfa映射到1000个hash中,每个hash保存1000个元素。因为同样的数据使用ziplist编码比存储string类型节约空间。
原因:
1,ziplist的内部表现是尽愁排列的一块连续内存数组。hashtable不是,占内存更多。
2,同样的数据使用ziplist编码的hash存储比string类型节约内存。
实验验证================
服务器redis参数配置:
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
=============================
验证一:验证hastable和ziplist编码的内存差异。
1,200个hash,每个500个field,value
fied value
000001 124F9D54-D107-4F7D-ABAF-E37DB7F1712E
操作前redis大小:
used_memory:1839072
used_memory_human:1.75M
写入200个ziplist编码的hash操作后。
used_memory:6772320
used_memory_human:6.46M
内存大小:4.71M
2,100000个idfa用hashtable编码存成1个hash。
操作后
used_memory:21137248
used_memory_human:20.16M
内存大小13.7M
结论:编码优化可以显著降低内存。使用hashtable占内存是ziplist的三倍。
===========================
验证2,控制键的个数来降低内存。
10万个idfa存成string格式。
# Memory
used_memory:33383776
used_memory_human:31.84M
内存大小11.68M
结论:相同数量的string是ziplist编码的hash内存两倍多。
redis内存优化方法的更多相关文章
- Android 中对于图片的内存优化方法
Android 中对于图片的内存优化方法,需要的朋友可以参考一下 1. 对图片本身进行操作 尽量不要使用 setImageBitmap.setImageResource. BitmapFact ...
- 如何用分布式缓存服务实现Redis内存优化
Redis是一种支持Key-Value等多种数据结构的存储系统,其数据特性是“ALL IN MEMORY”,因此优化内存十分重要.在对Redis进行内存优化时,先要掌握Redis内存存储的特性比如字符 ...
- [转]探索 Android 内存优化方法
前言 这篇文章的内容是我回顾和再学习 Android 内存优化的过程中整理出来的,整理的目的是让我自己对 Android 内存优化相关知识的认识更全面一些,分享的目的是希望大家也能从这些知识中得到一些 ...
- Redis内存优化memory-optimization
https://redis.io/topics/memory-optimization 官方文档 一.特殊编码: 自从Redis 2.2之后,很多数据类型都可以通过特殊编码的方式来进行存储空间的优化 ...
- Redis内存分析方法
一般会采用 bgsave 生成 dump.rdb 文件,再结合 redis-rdb-tools 和 sqlite 来进行静态分析. BGSAVE:在后台异步(Asynchronously)保存当前数据 ...
- 解决Apache长时间占用内存大的问题,Apache 内存优化方法
问:为什么服务器在连续运行多天后或访问峰值后,进程中的一个Apache.exe占用内存几百兆不减少?答:用记事本打开apache2\conf\httpd.conf,我在centos5上装了kloxo, ...
- Redis系列--内存淘汰机制(含单机版内存优化建议)
https://blog.csdn.net/Jack__Frost/article/details/72478400?locationNum=13&fps=1 每台redis的服务器的内存都是 ...
- redis的内存优化【转】
Redis所有的数据都在内存中,而内存又是非常宝贵的资源.对于如何优化内存使用一直是Redis用户非常关注的问题.本文让我们深入到Redis细节中,学习内存优化的技巧.分为如下几个部分: 一.redi ...
- Redis之内存优化
Redis所有的数据都存在内存中,当前内存虽然越来越便宜,但跟廉价的硬盘相比成本还是比较昂贵,因此如何高效利用Redis内存变得非常重要.高效利用Redis内存首先需要理解Redis内存消耗在哪里,如 ...
随机推荐
- flask的request的用法
其中在头部取值是这样的,request.headers,得到的是一个字典 参考链接:http://blog.csdn.net/yannanxiu/article/details/53116652
- Python脚本MAC上双击执行,如何设置?
1.在文件首行添加如下代码: 如果你想使用默认python版本执行当前的脚本,即python2,则需要添加 #!/usr/bin/env python # -*- coding: utf-8 -*- ...
- GZip压缩与解压缩
GZIP的压缩与解压缩代码: public static class CompressionHelper { /// <summary> /// Compress the byte[] / ...
- 8 函数类型——《Swift3.0从入门到出家
Swift语言中每一个函数都有它特定的数据类型,称其为函数类型 函数类型和基本数据类型一样,可以定义变量或者常量,可以定义函数形参,也可以做为函数的返回值类型 函数类型的格式为:参数列表的数据类型—& ...
- Java开发前期准备工作
配置Java开发环境变量 在"系统变量"中设置3项属性,JAVA_HOME, PATH, CLASSPATH. 变量设置参数如下: 变量名:JAVA_HOME 变量值:C:\Pro ...
- hbase官方文档(转)
FROM:http://www.just4e.com/hbase.html Apache HBase™ 参考指南 HBase 官方文档中文版 Copyright © 2012 Apache Soft ...
- php时间 显示刚刚 几分钟前等
功能示例: $now = time();foreach($sys_res as $k => $v){ $day = intval(floor(($now - $v->system_time ...
- 获取sonar扫描结果
api通过抓包获取 java 1.get和post方法 package com.tools.httpUtil; import java.io.BufferedReader; import java.i ...
- Javascript 推荐一个图形化展示库
觉得这个库不错: http://almende.github.io/chap-links-library/index.html
- SQL语句替换字段内容例子
SELECT REPLACE(SysFuncID,'7201','7204') , CASE WHEN Flag=1 THEN REPLACE(funcname ...