• Redis实践优化


    Key设计

    • 遵循基本格式:[业务名称]:[数据名]:[数据]
    • 长度不超过44字节
    • 不包含特殊字符

    优点:更节省内存,key是string类型,底层编码包含int、embstr和raw三种。embstr在小于44字节使用,采用连续内存空间,内存占用更小


    拒绝BigKey

    BigKey通常以Key的大小和Key中成员的数量来综合判定,例如:

    • Key本身的数据量过大:一个String类型的Key,它的值为5MB。

    • Key中的成员数过多:一个ZSET类型的Key,它的成员数量为10,000个。

    推荐值:

    • 单个key的value小于10KB

    • 对于集合类型的key,建议元素数量小于1000


    恰当的数据类型

    存储一个User对象

    • 方式1
      在这里插入图片描述

    • 方式2
      在这里插入图片描述

    方式二底层使用ziplist,空间占用小,可以灵活访问对象的任意字段,Hash结构的entry数量不要超过1000,否则不能优化ziplist


    批处理

    一次性想处理多条数据:

    • Redis提供了很多Mxxx这样的命令,可以实现批量插入数据,例如:mset

    Mxxx缺点是不能执行复杂操作,比如同时操作两种数据类型

    • 使用Pipeline

    Pipelilne是管道,可以把不同的复杂命令放到管道到,然后一次网络传输到Redis服务端执行

    Pipeline pip = jedis.pipelined();
    pip.set("name", 1);
    pip.sadd("scope", 99);
    // 在放入两条命令后执行
    pip.sync();
    

    慢查询

    慢查询的阈值可以通过配置指定:

    • slowlog-log-slower-than:慢查询阈值,单位是微秒。默认是10000,建议1000慢查询会被放入慢查询日志中,日志的长度有上限,可以通过配置指定。
    • slowlog-max-len:慢查询日志(本质是一个队列)的长度。默认是128,建议1000
    # 获取慢查询日志长度
    config get slowlog-max-len
    # 获取慢查询阈值
    config get slowlog-log-slower-than
    # 修改慢查询日志长度
    config set slowlog-max-len
    # 修改慢查询阈值
    config set slowlog-log-slower-than
    

    要永久启用,修改配置文件

    排查慢查询

    # 查看慢查询日志长度
    slowlog len
    # 读取n条慢查询日志,不输入参数则查询全部
    slowlog get [n]
    # 清空慢查询列表
    slowlog reset
    

    安全配置

    为了避免这样的漏洞,这里给出一些建议:

    • Redis一定要设置密码
    • 禁止线上使用下面命令: keys(防止慢查询)、flushall、flushdb、config set等命令。可以利用rename-command禁用。
    • bind:限制网卡,禁止外网网卡访问
    • 开启防火墙
    • 不要使用Root账户启动Redis⑥
    • 尽量不是有默认的端口

    如果没有密码和采用默认端口,容易让黑客利用Redis先保存数据在内存,然后持久化到服务器,接着config set到对应目录,ssh连接相关目录下的公钥,则无密码操作服务器,很危险。

  • 相关阅读:
    【C++】STL:string类
    java社区供暖系统springboot
    Ubuntu 安装最新版python
    堆外内存和堆内内存及虚引用的应用
    java-类和对象
    【quartz】从数据库中读取配置实现动态定时任务
    数据库及ADO.NET学习(四)
    静态HTML网页设计作品 DIV布局家乡介绍网页模板代码---(太原 10页带本地存储登录注册 js表单校验)
    【Spark NLP】第 13 章:构建知识库
    C++下载器程序:如何使用cpprestsdk库下载www.ebay.com图片
  • 原文地址:https://blog.csdn.net/pmc0_0/article/details/126943607