Redis7.0.7的简单安装与学习

redis7,简单,安装,学习 · 浏览次数 : 825

小编点评

## Redis 的外部访问权限设置 **可以外部访问:** * 本机 IPv4 可以通过 `127.0.0.1` 的 IP 地址和端口访问 Redis。 **需要绑定 IP 地址:** * 外部访问需要绑定 Redis 的 IP 地址,例如 `0.0.0.0`。 * 这需要在 `redis.conf` 文件中设置 `bind` 选项,并将 IP 地址和端口绑定到 `bind` 选项中。 **protected-mode 模式需要关闭:** * 在 protected-mode 模式下,Redis 会关闭所有本地连接。 * 这意味着外部无法通过 IP 地址或端口访问 Redis。 **port 不解释:** * `port` 的值可以从 `redis.conf` 文件中获取,也可以通过 `listen` 选项设置。 * 默认情况下,`listen` 选项的值是 `0`,表示使用默认端口 6379。 **tcp-keepalive:** * `tcp-keepalive` 设置控制 TCP 连接的超时时间。 * 默认值为 300 秒,表示在连接稳定后 300 秒内尝试连接服务器。 **daemonize 参数:** * `daemonize` 设置控制 Redis 的守护模式。 * 默认值为 `no`,表示使用容器内运行的 Redis 服务。 * 设置 `yes` 可以开启守护模式,设置 `no` 可以关闭守护模式。 **pidfile:** * `pidfile` 设置用于 Redis 的 pid 文件路径。 * 默认值是 `/var/run/redis_6379.pid`。 **loglevel:** * `loglevel` 设置控制日志信息的级别。 * 默认值为 `notice`,表示只显示关键信息。 * 设置 `logfile` 参数可以指定自定义日志文件路径。 **数据库数量:** * `database` 设置允许使用的最大数据库数量。 * 默认值为 15,表示支持 15 个数据库。 **memory 设置:** * `maxmemory` 设置了 Redis 内存使用的最大值。 * `maxmemory_policy` 设置了内存淘汰策略。 * `volatile-lru` 等配置选项用于设置最近最少使用算法。 **appendonly 模式:** * `appendonly` 设置是否在 `append` 操作结束后释放已设置的键值对。 * 默认值为 `no`,表示每次 `append` 操作都将释放设置的键值对。 * 对于 `appendonly` 为 `yes` 的场景,需要在 `redis.conf` 文件中设置 `client maxmemory` 和 `client allowappend` 等参数。 **其他设置:** * `jemalloc-bg-thread` 设置使用异步线程进行 jemalloc2 操作。 * `noeviction` 设置是否在内存超过限制后,关闭所有写入操作。 * `read-only` 设置是否只允许读操作。

正文

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的简单安装与学习相似的内容:

Redis7.0.7的简单安装与学习

Redis7.0.7的简单安装与学习 摘要 2022.12.18 世界杯决赛 另外是我感染奥密克戎第五天. 高烧已经没了,但是嗓子巨疼. 睡不着觉,肝胆学习一下最新的Redis7.0.7 第一部分安装 现在最新的stable 的安装包地址为: http://download.redis.io/red

[转帖]Redis 慢查询分析

https://www.zeekling.cn/articles/2020/07/23/1595493094855.html 简介 慢查询,顾名思义就是比较慢的查询,但是究竟是哪里慢呢?首先,我们了解一下Redis命令执行的整个过程: 20200322150028330.jpg 发送命令 命令排队

[转帖]Redis 7.0 三节点哨兵(Sentinel)高可用 环境搭建手册

2022-06-17 16:253480原创Redis 本文链接:https://www.cndba.cn/dave/article/108088 1 哨兵高可用架构说明 Redis 最早的高可用方案是主从复制,但这种方案存在一个问题,就是当主库宕机后,从库不会自动切成主库,需要人工干预。 所有在主

[转帖]Redis 7 参数 修改 说明

2022-06-16 14:491800原创Redis 本文链接:https://www.cndba.cn/dave/article/108066 在之前的博客我们介绍了Redis 7 的安装和配置,如下: Linux 7.8 平台 Redis 7 安装并配置开机自启动 操作手册https://ww

Garnet:微软官方基于.NET开源的高性能分布式缓存存储数据库

前言 前不久Redis宣布从 Redis 7.4 开始,将原先比较宽松的 BSD 源码使用协议修改为 RSALv2 和 SSPLv1 协议,该协议变化意味着Redis不再开源。今天给大家分享一款完全开源(MIT协议)、免费的Redis替代性项目产品:Garnet。 Redis开源协议详情:https

记一次asp.net 8 服务器爆满的解决过程

1.描述一下服务器配置: 一台2c4g的centos,做api接口反代 一台8c16g的windows 2019 作为实际服务器,跑了iis,sql server,mongodb,redis 2.业务描述 2.0 服务器分为两个站点:importapi:用于处理数据导入,,,webapi:用于处理对

[转帖]Redis 运维实战 第07期:Hotkey

https://cloud.tencent.com/developer/article/1986830 上一节,我们聊到了 Redis 的 Bigkey,这节内容我们聊聊同样需要引起重视的 Hotkey。 1 背景 Hotkey 指某个时间段访问频率比较高的键值,对应的业务比如热点话题或者热点商品。

redis性能测试

环境 redis 7.2.5 主频 核心数 内存 2.5GHz 32 64GB 测试结论 当前场景下redis单线程、多线程表现差异不大 使用pipeline模式可以显著提高基准性能 非pipilie下redis性能再12~13w左右 pipiline下redis性能在35w左右 测试记录 单线程r

[转帖]Redis manager快速启动

2.x 快速启动 系统环境要求 JDK8+, OpenJDK8+ Maven3 Mysql5.7+ 启动命令 在 redis-manager 目录下执行 ./bin/start.sh 准备数据库 系统仅需要创建数据库即可,相关表会在项目启动时自动创建 CREATE DATABASE `redis_m

[转帖]Redis各版本特性汇总

redis4redis5redis6redis6.2重大特性1.模块系统 2.PSYNC2 3.LFU淘汰策略 4.混合RDB-AOF持久化 5.LAZY FREE延迟释放 6.MEMORY内存分析命令 7.支持NAT/DOCKER 8.主动碎片整理 1.新增Stream数据类型 2.新增Redis