redis内存优化方法

时间:2021-08-28 00:41:46

先来认识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内存优化方法的更多相关文章

  1. Android 中对于图片的内存优化方法

    Android 中对于图片的内存优化方法,需要的朋友可以参考一下     1. 对图片本身进行操作 尽量不要使用 setImageBitmap.setImageResource. BitmapFact ...

  2. 如何用分布式缓存服务实现Redis内存优化

    Redis是一种支持Key-Value等多种数据结构的存储系统,其数据特性是“ALL IN MEMORY”,因此优化内存十分重要.在对Redis进行内存优化时,先要掌握Redis内存存储的特性比如字符 ...

  3. [转]探索 Android 内存优化方法

    前言 这篇文章的内容是我回顾和再学习 Android 内存优化的过程中整理出来的,整理的目的是让我自己对 Android 内存优化相关知识的认识更全面一些,分享的目的是希望大家也能从这些知识中得到一些 ...

  4. Redis内存优化memory-optimization

    https://redis.io/topics/memory-optimization  官方文档 一.特殊编码: 自从Redis 2.2之后,很多数据类型都可以通过特殊编码的方式来进行存储空间的优化 ...

  5. Redis内存分析方法

    一般会采用 bgsave 生成 dump.rdb 文件,再结合 redis-rdb-tools 和 sqlite 来进行静态分析. BGSAVE:在后台异步(Asynchronously)保存当前数据 ...

  6. 解决Apache长时间占用内存大的问题,Apache 内存优化方法

    问:为什么服务器在连续运行多天后或访问峰值后,进程中的一个Apache.exe占用内存几百兆不减少?答:用记事本打开apache2\conf\httpd.conf,我在centos5上装了kloxo, ...

  7. Redis系列--内存淘汰机制(含单机版内存优化建议)

    https://blog.csdn.net/Jack__Frost/article/details/72478400?locationNum=13&fps=1 每台redis的服务器的内存都是 ...

  8. redis的内存优化【转】

    Redis所有的数据都在内存中,而内存又是非常宝贵的资源.对于如何优化内存使用一直是Redis用户非常关注的问题.本文让我们深入到Redis细节中,学习内存优化的技巧.分为如下几个部分: 一.redi ...

  9. Redis之内存优化

    Redis所有的数据都存在内存中,当前内存虽然越来越便宜,但跟廉价的硬盘相比成本还是比较昂贵,因此如何高效利用Redis内存变得非常重要.高效利用Redis内存首先需要理解Redis内存消耗在哪里,如 ...

随机推荐

  1. Android 网络框架之Retrofit2使用详解及从源码中解析原理

    就目前来说Retrofit2使用的已相当的广泛,那么我们先来了解下两个问题: 1 . 什么是Retrofit? Retrofit是针对于Android/Java的.基于okHttp的.一种轻量级且安全 ...

  2. Visual Studio 2015 Update 2

    Visual Studio Community 2015(带Update2)(社区版,针对个人免费): 简体中文版 || SHA1:待更新 繁体中文版 || SHA1:待更新 英文版 || SHA1: ...

  3. Linux集群及LVS简介

    一.什么是集群 通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的 ...

  4. knockout——官网demo

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  5. OpenJudge&sol;Poj 2027 No Brainer

    1.链接地址: http://bailian.openjudge.cn/practice/2027 http://poj.org/problem?id=2027 2.题目: 总Time Limit: ...

  6. php操作路径的经典方法

    function create_folders($dir){    return is_dir($dir) or ( create_folders( dirname( $dir ) ) and mkd ...

  7. Ajax&amp&semi;jQuery教案总结

    Ajax&jQuery教程总结 目录 第一章 Ajax入门 6 第1讲 传统表单提交存在的问题 6 课程内容 6 1. 问题的引入 6 2. 问题的解决 6 参考进度(0.5课时) 7 第2讲 ...

  8. C&num;中&与&&的区别

    c#&是什么意思? 看过一些文章,关于这个的简单而容易被忽略的语法,说的总有点瑕疵. 贴代码15秒之内应该能知道c#中一个&和两个&&的区别,开始计数了........ ...

  9. ●SPOJ 8222 NSUBSTR&ndash&semi;Substrings&lpar;后缀自动机&rpar;

    题链: http://www.spoj.com/problems/NSUBSTR/ 题解: 后缀自动机的水好深啊!懂不了相关证明,带着结论把这个题做了.看来这滩深水要以后再来了. 本题要用到一个叫 R ...

  10. SpriteBuilder实现2D精灵光影明暗反射效果&lpar;二&rpar;

    使用SpriteBuilder新建一个项目,将默认MainScene.ccb中的内容统统删掉,此时场景应该是一片漆黑. 将官网中的2张图片以及我自己做的2张图片全部拖拽到其文件视图中去: 其中加_n后 ...