Redis7.0.7的简单安装与学习
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的简单安装与学习的更多相关文章
- [YII2.0] 高级模板简单安装教程
YIICHINA官网教程就很完善:http://www.yiichina.com/tutorial/692 但是在yii2框架安装运行init.bat报错php.exe不是内部或外部命令, 解决办法: ...
- spark0.8.0安装与学习
spark0.8.0安装与学习 原文地址:http://www.yanjiuyanjiu.com/blog/20131017/ 环境:CentOS 6.4, Hadoop 1.1.2, J ...
- redis5.0.3单实例简单安装记录
redis5.0.3单实例简单安装记录 日常需要测试使用,索性记录下来,免得临时又麻烦的找资料. yum -y install make gcc-c++ cmake bison-devel ncurs ...
- 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 ...
- Redis 集群模式的安装与配置【源码安装redis-7.0.5】
Redis最新版下载地址:http://download.redis.io/releases/redis-7.0.5.tar.gz 步骤如下: 1)wget http://download.redis ...
- Redis简介与简单安装
Redis简介与简单安装 一.NoSQL的风生水起 1.1 后Web2.0时代的发展要求 随着互联网Web2.0网站的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类 ...
- gtk+3.0的环境配置及基于gtk+3.0的python简单样例
/********************************************************************* * Author : Samson * Date ...
- 20165226 预备作业3 Linux安装及学习
20165226 预备作业3 Linux安装及学习 Linux安装 一.下载安装VirtualBox 1.首先在官网下载,点开基于VirtualBox虚拟机安装Ubuntu图文教程 找到版本进行下载安 ...
- 20165230 预备作业3 Linux安装及学习
20165230 预备作业3 Linux安装及学习 安装Linux操作系统 通过学习实践基于VirtualBox虚拟机安装Ubuntu图文教程,开始了虚拟机的安装,根据教程按着步骤一步一步的完成. 遇 ...
- 20165325 预备作业3 Linux安装及学习
Linux安装及学习 一.VirtualBox和Ubuntu安装 问题一:虚拟机中Ubuntu的版本 在设置虚拟机的操作系统的版本时,我发现我的电脑只能设置32-bit的Ubuntu版本.教程上选用了 ...
随机推荐
- 数据库实践丨MySQL多表join分析
摘要:在数据库查询中,往往会需要查询多个表的数据,比如查询会员信息同时查询关于这个会员的订单信息,如果分语句查询的话,效率会很低,就需要用到join关键字来连表查询了. Join并行 Join并行1. ...
- 非暴力拆解:小熊派NB-IoT通信扩展板
摘要:相信大家对小熊派的NB-IoT通信扩展板已经非常了解了,但你有真正的了解过其内部构造吗?今天小编不聊技术,带你做一回拆·机·客! 相信大家对小熊派的NB-IoT通信扩展板已经非常了解了,但你有真 ...
- Serverless冷启动:如何让函数计算更快更强?
摘要:借助Serverless计算,开发者仅需上传业务代码并进行简单的资源配置便可实现服务的快速构建部署,云服务商则按照函数服务调用量和实际资源使用收费,从而帮助用户实现业务的快速交付和低成本运行. ...
- APP搜索如何又快又准?
摘要:搜索的概念深入人心,但做好一个体验绝佳的搜索服务并不是一件容易的事. 本文分享自华为云社区<云搜索服务在APP搜索场景的应用>,作者:写代码的贺大师 搜索无处不在,尤其是在移动互联的 ...
- 打破联接壁垒,华为云IoT到底强在哪
摘要:先哲说,万物莫不相异,而在今天,万物也可相通. 本文分享自华为云社区<打破联接壁垒,华为云IoT到底强在哪?>,作者:华为IoT云服务. "凡物莫不相异", 是十 ...
- 一文你带快速认识Vue-Router路由
摘要:Vue Router是Vue.js 官方的路由管理器.它和Vue.js的核心深度集成,可以非常方便的用于SPA应用程序的开发. 本文分享自华为云社区<Vue-Router路由快速了解与应用 ...
- 解读分布式调度平台Airflow在华为云MRS中的实践
摘要:Airflow是一个使用Python语言编写的分布式调度平台,通过DAG(Directed acyclic graph 有向无环图)来管理任务. 本文分享自华为云社区<分布式调度平台Air ...
- 中企出海,用火山引擎DataTester开启增长第一步
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 今年 Google 宣布其提供的A/B测试工具 Optimize 将在2023年9月30号停止服务.在全球化浪 ...
- 打破虚拟边界的视频交互新方式,AR隔空书写的应用理念和探索实践
AR隔空书写演示 随着技术的发展和超视频化的时代驱动,交互的形式日渐丰富.从屏幕点触,到语音交互,人脸.指纹.声纹,再到近年流行的AR和VR--人类早在语言出现之前便习惯使用肢体和手势这种近乎本能的沟 ...
- PS 项目报工与取消
1.项目报工 1.1.CN25 1.2.BAPI:BAPI_NETWORK_CONF_ADD "-----------------------------@斌将军-------------- ...