Redis优化总结

注意在redis.conf中的小聚合数据类型的特殊编码设置(http://carlosfu.iteye.com/blog/2254572)

hash-max-zipmap-entries 64 (hash-max-ziplist-entries for Redis >= 2.6)
hash-max-zipmap-value 512 (hash-max-ziplist-value for Redis >= 2.6)
list-max-ziplist-entries 512
list-max-ziplist-value 64
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
set-max-intset-entries 512

使用32位实例将内存受限在4G内,不过他们的RDB和AOF文件是兼容在32位和64位下去切换使用的。

使用bit位级别操作和byte字节级别操作来减少不必要的内存使用

  • bit位级别操作:GETRANGE, SETRANGE, GETBIT and SETBIT
  • byte字节级别操作:GETRANGE and SETRANGE

尽可能地使用hashes哈希,因为小Hashes会被编码成一个非常小的空间。
使用哈希来在Redis的顶部在普通key-value存储上来抽象内存使用效率
关于内存分配:
如果maxmemory没有设置的Redis会继续分配内存,因为它认为合适的,因此它可以(逐渐)吃了你的全部可用内存。因此,通常建议配置一些限制。您可能还需要设置maxmemory策略,以noeviction(这不是在一些旧版本的Redis的默认值)。
这使得Redis的返回内存不足的错误写命令,如果当它到达了极限 – 这反过来可能会导致应用程序错误,但不会导致因为内存饥饿而整机死亡。

另外redis的6种过期策略,redis中的默认的过期策略是volatile-lru,设置方式
config set maxmemory-policy volatile-lru
maxmemory-policy 六种方式
volatile-lru:只对设置了过期时间的key进行LRU(默认值)
allkeys-lru : 是从所有key里 删除 不经常使用的key
volatile-random:随机删除即将过期key
allkeys-random:随机删除
volatile-ttl : 删除即将过期的
noeviction : 永不过期,返回错误
maxmemory-samples 3 是说每次进行淘汰的时候 会随机抽取3个key 从里面淘汰最不经常使用的(默认选项)

数据尽量压缩
尽量使用短的key
使用Hashes值存储而不带额外的数据元

Original: https://www.cnblogs.com/sunxucool/p/5632340.html
Author: 悟寰轩-叶秋
Title: Redis优化总结

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/529074/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 05-ElasticSearch高级搜索

    * package com.coolman.hotel.test; import com.coolman.hotel.pojo.HotelDoc; import com.faste…

    Linux 2023年6月7日
    0117
  • vue+vant音乐播放器(andriod)项目

    新建项目 在适合的目录下打开终端输入vue create music_player,回车 选择Default([Vue 2] babel,eslint) 等待项目构建完成 项目构建…

    Linux 2023年6月13日
    094
  • [ Tcl ] 非阻塞模式启动外部程序,并接收返回值的方法

    https://www.cnblogs.com/yeungchie/ Callback 函数 proc Callback { handle } { variable line if…

    Linux 2023年6月7日
    0102
  • 优化gcc

    优化gcc 目的是改善程序的执行性能,通过编译选项(On)来控制优化代码生成,(n)是一个代表优化级别的整数, 典型的有(0, 1, 2, 3) 其中(-O)等价于(-O_1), …

    Linux 2023年6月7日
    0117
  • 每天一个 HTTP 状态码 200

    200 OK 表示请求成功,一切安好… 200 OK 话不多说,这个状态码应该是最最最常用的了,无人不知,无人不晓;就是表示请求成功的意思, 你若安好,便是晴天。 摘自…

    Linux 2023年6月7日
    0108
  • Linux虚拟机上按安装jdk1.8.0

    Linux虚拟机上按安装jdk1.8.0 1.准备工作 jdk1.8.0下载地址: http://www.oracle.com/technetwork/java/javase/do…

    Linux 2023年6月11日
    087
  • Redisson实现分布式锁源码解读

    文章目录 一、分布式锁的概念 和 使用场景 二、将redis官网对于分布式锁(红锁)的定义和Redisson实现做概括性总结 三、基于Redisson的分布式实现方案 四、加锁过程…

    Linux 2023年5月28日
    089
  • mysql存储中文乱码

    表现 前端页面,封装到html里的中文可以显示,和后台相关的中文显示都是 ??? 。查看network请求,传参正常。 查看mysql编码,是utf8。再看连接数据库的JDBC设置…

    Linux 2023年6月8日
    090
  • SpringBoot的文件上传&下载

    前言:不多BB直接上代码 文件上传 pom依赖添加commons-io <!– 上传/下载jar https://mvnrepository.com/artifact/co…

    Linux 2023年6月14日
    0108
  • bash 教程-4 shell 脚本 调试 环境 [MD]

    我的GitHub 我的博客 我的微信 我的邮箱 bqt20094 baiqiantao@sina.com 脚本基础 脚本 script 就是包含一系列命令的一个文本文件,所有能够在…

    Linux 2023年5月28日
    094
  • 虚拟机的NAT网络配置

    写在前面: 本篇文章介绍如何使虚拟机使用VMware的NAT网络模式。NAT,即Network Address Translation的缩写,在NAT模式下虚拟机被接入到物理机的虚…

    Linux 2023年6月8日
    0136
  • apparmor 源码分析

    这里不对apparmor做介绍,记录一下源码分析过程。 static int __init apparmor_init(void) -> security_add_hooks…

    Linux 2023年6月13日
    075
  • 在linux中使用tcpdump抓包的方法:

    在linux中使用tcpdump抓包的方法: 1,运行下面命令来从所有网卡中捕获数据包: tcpdump -i any 2,从指定网卡中捕获数据包 tcpdump -i eth0 …

    Linux 2023年5月27日
    0123
  • spring redis session 使用入门[原]

    两份properties配置, 仅端口不同 配置文件添加redis 链接 application-9001.properties application-9002.properti…

    Linux 2023年5月28日
    099
  • 常用命-sar

    作者:Outsrkem原文链接:https://www.cnblogs.com/outsrkem/p/14725402.html本文版权归作者所有,欢迎转载,但未经作者同意必须保留…

    Linux 2023年6月6日
    089
  • 我的第一个程序

    新建一个java文件 文件后缀名为.java Hello.java 【注意点】系统可能没有显示文件后缀名,我们需要手动代开 编写代码 public class Hello{    …

    Linux 2023年6月7日
    070
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球