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版本.教程上选用了 ...
随机推荐
- 什么是Python中的套接字编程?
摘要:本文涵盖了有关使用Python进行套接字编程的所有领域.套接字可以帮助您建立这些连接,而Python无疑可以简化连接. 本文分享自华为云社区<从零开始学python | 什么是Python ...
- 补齐OLAP引擎短板!ByteHouse 是如何实现流批一体的?
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 计算机领域一直流传一句话--"没有银弹",这句话出自计算机科学家布鲁克斯<没有银弹& ...
- 火山引擎数智平台 VeDI 帮助智能投影仪更懂用户需求
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 当露营成为年轻人的一种全新生活方式后,连带着户外野营帐篷.可折叠桌椅.卡式炉.多人趣味桌游等露营周边市场都迎来新一 ...
- 2017年第八届 蓝桥杯B组C/C++决赛题目
部分题目示意图来自网络,所以会带水印 最后编辑时间: 2021年5月12日 统一声明 如果不写默认带有常用头文件 如果不表明主函数默认表示在 void solve(){} 默认使用 using nam ...
- P5723 注意特殊情况
https://www.luogu.com.cn/problem/P5723 不是难题,但是倘若忽略L<2的情况就无法AC,Lougu得分只有80.因此写完题后一定要把各种边界性质的数据想出并用 ...
- C#实现斐波拉切数列求和
C#实现斐波拉切数列求和 private void button1_Click(object sender, EventArgs e) { listBox1.Items.Clear();//清空Lis ...
- @Conditional注解使用及@ConditionalOnXXX各注解的作用
本文为博主原创,转载请注明 出处: 一.@Conditional注解作用: 必须是 @Conditional 注解指定的条件成立,才会在容器中添加组件,配置类里面的所有配置才会生效 二.@Condit ...
- docker 安装 ETCD 及 etcd 使用
本文为博主原创,未经允许不得转载: etcd 是 CoreOS 团队发起的一个开源项目(Go 语言,其实很多这类项目都是 Go 语言实现的,只能说很强大),实现了分布式键值存储和服务发现,etcd 和 ...
- maven总结二: 常用标签及属性
本文为博主原创,未经允许不得转载 目录: 1. maven 依赖属性:groupId.artifactId.version 2.插件执行: execution,id ,phase,goals,con ...
- 【MicroPython】用 c 添加接口 -- 添加 type
[来源]https://www.eemaker.com/micropython-type.html