Redis7.0.7的简单安装与学习


摘要

2022.12.18
世界杯决赛
另外是我感染奥密克戎第五天.
高烧已经没了,但是嗓子巨疼.
睡不着觉,肝胆学习一下最新的Redis7.0.7

第一部分安装

现在最新的stable 的安装包地址为:
http://download.redis.io/redis-stable.tar.gz
然后分别在
Golden 6170 2.7G 四路全闪SSD服务器
飞腾2000+ 64核心 128G内存的浪潮NF2180M3-F服务器
飞腾服务器上面KVM的虚拟机: 8c 32G 想着先验证一下安装时间:

不同CPU编译时间统计

CPU型号 SYS时间 USER时间 合计时间 比率
Golded 6150 9.975s 56.074s 63.758s 100%
P FT2000+ 8.282s 210.842s 214.923s 337%
V FT2000+ 11.373s 222.088s 230.940s 360%

安装时间简要分析

Intel的第一代至强高频处理器的性能比上一代飞腾的2000+
有至少三倍的性能优势.
我认为redis的源码包也就 2-3M大小,
与内存读写速度和磁盘读写速度的关联关系不是非常巨大
可以简单看做是针对CPU的性能测试.

第二部分 参数学习

  • 看一下所有的未经过注释的默认参数
  • grep -v "^#" redis.conf |grep -v "^$"
bind 127.0.0.1 -::1
protected-mode no
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
databases 16
always-show-logo no
set-proc-title yes
proc-title-template "{title} {listen-addr} {server-mode}"
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
rdb-del-sync-files no
dir ./
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync yes
repl-diskless-sync-delay 5
repl-diskless-sync-max-replicas 0
repl-diskless-load disabled
repl-disable-tcp-nodelay no
replica-priority 100
acllog-max-len 128
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
lazyfree-lazy-user-del no
lazyfree-lazy-user-flush no
oom-score-adj no
oom-score-adj-values 0 200 800
disable-thp yes
appendonly no
appendfilename "appendonly.aof"
appenddirname "appendonlydir"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
aof-timestamp-enabled no
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-listpack-entries 512
hash-max-listpack-value 64
list-max-listpack-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-listpack-entries 128
zset-max-listpack-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
jemalloc-bg-thread yes
ignore-warnings ARM64-COW-BUG

简单学习一下重要的参数

1. bind
指定Redis是否允许外部访问. 如果是本机(IPV4)
可以bingd 127.0.0.1, 如果是外部, 需要bind 0.0.0.0
2. protected-mode
生产环境需要关闭, 设置为 no
保护模式好像性能不是特别好.
3. port
不解释,指定端口.
4. tcp-backlog
TCP的半连接队列和全连接长度.
半连接队列的大小与用户 listen 传入的 backlog、net.core.somaxconn
net.core.somaxconn 都有关系,准确的计算规则见上面的源码分析
在系统参数不修改的情形,盲目调大 listen 的 backlog 对最终半连接队列的大小不会有影响。
在 listen 的 backlog 不变的情况下,盲目调大 somaxconn 和 max_syn_backlog 对最终半连接队列的大小不会有影响
全连接队列的大小是用户 listen 传入的 backlog 与 net.core.somaxconn 的较小值
From:https://blog.csdn.net/mingtiannihaoabc/article/details/122276910
5. timeout
连接客户端的默认超时时间. 默认值是0 就是不超时
如果很多客户端经常无效的话,可以设置一定的时间,避免过多的连接
6. tcp-keepalive
在linux系统中,客户端发送的最后一个数据包与
redis发送的第一个保活探测报文之间的时间间隔。单位是秒。
7. daemonize no
如果是容器内, 需要设置为no
如果作为后台服务,可以设置为yes
8. pidfile /var/run/redis_6379.pid
不同端口的建议进行修改.

9. loglevel notice  logfile ""
两个参数协同生效. 如果没设置logfile 应该会写入到/dev/null中.
如果需要调试,可以开启这个参数,但是认为对性能的损耗会很大.
10.database
数据库的数量. 可以从0 到 15 实现隔离.
11.always-show-logo no
不解释
12.rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
rdb-del-sync-files no
dir ./
save 300 10000
五分钟内有10000个键值对变化就进行一次dump文件保存
并且进行压缩和检查.文件名字是 dump.rdb
文件目录是当前目录.
13.复制的参数本次不学习了
14.lazy相关的命令
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
lazyfree-lazy-user-del no
lazyfree-lazy-user-flush no
redis 删除数据是分为两个步骤的:
从字典表中删除数据 和 释放数据占用内存。
lazy free 不是默认开启的,此外,对于不同场景存在对应的配置项,
我们需要分别开启对应的配置项才能在对应的场景下开启惰性删除,
惰性删除可以将内存释放动作放到后台线程中执行,不会阻塞主线程。
15.oom-score-adj
之前总结过 设置分支可以避免内存紧张是被OOM掉.

16.  disable-thp  yes
关闭透明大页
17. appendonly no
appendfilename "appendonly.aof"
appenddirname "appendonlydir"
appendfsync everysec
除去rdb之外第二种持久化方式
需要四个个命令协同生效.
18. slowlog-log-slower-than 10000
slowlog-max-len 128
可以查看命令超过10000微秒的slowlog
slowlog的最大长度是 128
19. hz 10 dynamic-hz yes
如果是进行lazy删除时, 每秒钟扫描数据库的频率.
20. jemalloc-bg-thread yes
是否再background的线程里面使用jemalloc
21. ignore-warnings ARM64-COW-BUG
飞腾和鲲鹏服务器需要取消注释
如果Redis启动会报错.

第三部分 Redis的内存设置信息

From https://www.cnblogs.com/zgxblog/p/14198543.html
作为内存数据库,为了防止redis占用过多的内存对其他的应用程序造成影响,
可以在redis.conf文件中通过设置maxmemory选项对redis所能够使用的最大内存做限制,
并通过maxmemory_policy内存淘汰策略对redis占用内存超过maxmemory之后的行为做限制。 设置方法:
config get maxmemory
config set maxmemory 100MB
另外一种方法修改配置文件:
maxmemory 100MB

Redis内存中key的策略

当 Redis 内存使用达到 maxmemory 时,
需要选择设置好的 maxmemory-policy 进行对数据进行淘汰机制。
1.volatile-lru(least recently used):
最近最少使用算法,从设置了过期时间的键key中选择空转时间最长的键值对清除掉;
2.volatile-lfu(least frequently used):
最近最不经常使用算法,从设置了过期时间的键中选择某段时间之内使用频次最小的键值对清除掉;
3.volatile-ttl:
从设置了过期时间的键中选择过期时间最早的键值对清除;
4.volatile-random:
从设置了过期时间的键中,随机选择键进行清除;
5.allkeys-lru:
最近最少使用算法,从所有的键中选择空转时间最长的键值对清除;
6.allkeys-lfu:
最近最不经常使用算法,从所有的键中选择某段时间之内使用频次最少的键值对清除;
7.allkeys-random:
所有的键中,随机选择键进行删除;
8.noeviction:
不做任何的清理工作,在redis的内存超过限制之后,所有的写入操作都会返回错误;
但是读操作都能正常的进行; 注意这个是Redis的默认值. 前缀为volatile-和allkeys-的区别在于二者选择要清除的键时的字典不同,
volatile-前缀的策略代表从redisDb中的expire字典中选择键进行清除;
allkeys-开头的策略代表从dict字典中选择键进行清除。 

第四部分 关于BigKeys不一定正确的理解

Redis的key的value一定不要太大.
如果客户端要从服务器端获取Redis的相关键值对信息
使用Get操作时, 从内存里面发送到网卡需要耗费大量昂贵的内存操作.
并且也会占用很多网络带宽的资源
100MB的key 会占用服务器1秒以上的网络栈时间(预计为2.5秒)
会引起其他访问者的大量时间延迟.
所以情况下一定要控制redis 的键值对的大小. 不然会导致严重的问题. 最近发现Redis的监控的机器的内存流量特别高.
公司内部又使用了缓存和锁和session的分布式处理
这一块会导致巨量的网络延迟和损耗
还是需要进行细致处理的.

Redis7.0.7的简单安装与学习的更多相关文章

  1. [YII2.0] 高级模板简单安装教程

    YIICHINA官网教程就很完善:http://www.yiichina.com/tutorial/692 但是在yii2框架安装运行init.bat报错php.exe不是内部或外部命令, 解决办法: ...

  2. spark0.8.0安装与学习

    spark0.8.0安装与学习       原文地址:http://www.yanjiuyanjiu.com/blog/20131017/ 环境:CentOS 6.4, Hadoop 1.1.2, J ...

  3. redis5.0.3单实例简单安装记录

    redis5.0.3单实例简单安装记录 日常需要测试使用,索性记录下来,免得临时又麻烦的找资料. yum -y install make gcc-c++ cmake bison-devel ncurs ...

  4. percona-toolkit 3.0.13 简单安装记录

    percona-toolkit 3.0.13 简单安装记录 环境:centos6.x mysql:8.0.17 yum -y install perl-DBIyum -y install perl-D ...

  5. Redis 集群模式的安装与配置【源码安装redis-7.0.5】

    Redis最新版下载地址:http://download.redis.io/releases/redis-7.0.5.tar.gz 步骤如下: 1)wget http://download.redis ...

  6. Redis简介与简单安装

    Redis简介与简单安装   一.NoSQL的风生水起 1.1 后Web2.0时代的发展要求 随着互联网Web2.0网站的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类 ...

  7. gtk+3.0的环境配置及基于gtk+3.0的python简单样例

    /*********************************************************************  * Author  : Samson  * Date   ...

  8. 20165226 预备作业3 Linux安装及学习

    20165226 预备作业3 Linux安装及学习 Linux安装 一.下载安装VirtualBox 1.首先在官网下载,点开基于VirtualBox虚拟机安装Ubuntu图文教程 找到版本进行下载安 ...

  9. 20165230 预备作业3 Linux安装及学习

    20165230 预备作业3 Linux安装及学习 安装Linux操作系统 通过学习实践基于VirtualBox虚拟机安装Ubuntu图文教程,开始了虚拟机的安装,根据教程按着步骤一步一步的完成. 遇 ...

  10. 20165325 预备作业3 Linux安装及学习

    Linux安装及学习 一.VirtualBox和Ubuntu安装 问题一:虚拟机中Ubuntu的版本 在设置虚拟机的操作系统的版本时,我发现我的电脑只能设置32-bit的Ubuntu版本.教程上选用了 ...

随机推荐

  1. 3种方法,用Java找出两个List中的重复元素

    本文分享自华为云社区<如何用Java找出两个List中的重复元素,读这一篇就够了>,作者: 努力的阿飞. 在Java编程中,我们经常需要找出两个列表(List)中的重复元素.在本文中,我们 ...

  2. 高性能网络设计秘笈:深入剖析Linux网络IO与epoll

    本文分享自华为云社区<高性能网络设计秘笈:深入剖析Linux网络IO与epoll>,作者: Lion Long . 一.epoll简介 epoll是Linux内核中一种可扩展的IO事件处理 ...

  3. 实践案例丨ACL2020 KBQA 基于查询图生成回答多跳复杂问题

    摘要:目前复杂问题包括两种:含约束的问题和多跳关系问题.本文对ACL2020 KBQA 基于查询图生成的方法来回答多跳复杂问题这一论文工作进行了解读,并对相关实验进行了复现. 1.摘要 1.1 复杂问 ...

  4. 带你掌握数仓的作业级监控TopSQL

    摘要:目前TopSQL功能被用户广泛使用,是性能定位.劣化分析.审计回溯等重要的基石,为用户提供覆盖内存.耗时.IO.网络.空间等多方面的监控能力. 本文分享自华为云社区<GaussDB(DWS ...

  5. 案例集锦|科技赋能,华为云GaussDB助千行百业数字化转型

    当下,全社会驶入数字化转型快车道,以科技赋能.智慧转型为主旨的数字生态推动着千行百业的变革.数据库作为企业核心数据底座,华为云提供了安全可靠的云原生底座和一站式上云解决方案.其中华为云GaussDB覆 ...

  6. 带你了解 HBase 数据模型和 HBase 架构

    摘要:HBase 是一个面向列的 NoSQL 数据库. 本文分享自华为云社区<HBase 架构:HBase 数据模型 & HBase 读/写机制>,作者: Donglian Lin ...

  7. Python 可以满足你任何 API 使用需求

    摘要:在本教程中学到的概念和技术将允许您使用自己喜欢的任何 API 进行练习,并使用 Python 来满足您可能拥有的任何 API 使用需求. 本文分享自华为云社区<Python 和 API:读 ...

  8. 开心档之MySQL 创建数据库

    MySQL 创建数据库 我们可以在登陆 MySQL 服务后,使用 create 命令创建数据库,语法如下: CREATE DATABASE 数据库名; 以下命令简单的演示了创建数据库的过程,数据名为 ...

  9. Solon v2.2.12 发布,Java 应用开发框架

    Solon 是一个高效的 Java 应用开发框架:更快.更小.更简单.它不是 Spring.没有使用 Servlet.JavaEE 接口,是一个有自己接口标准的开放生态: 150多个生态插件,可以满足 ...

  10. Solon Cloud 2.2.10 架构图发布

    Solon Cloud 是在 Solon 的基础上构建的微服务开发套件.以标准与规范为核心,构建丰富的开放生态.为微服务开发提供了一个通用防腐层(即不用改代码,切换配置即可更换组件). 本次发布,展示 ...