Redis 安装

# 1.下载软件包
wget https://download.redis.io/releases/redis-6.2.6.tar.gz

# 2.解压安装包
tar -zxvf redis-6.2.6.tar.gz -C /usr/local/src

# 3.安装编译环境
yum install -y gcc gcc-c++

# 4.编译安装
cd /usr/local/src/redis-6.2.6/
make PREFIX=/usr/local/redis install

# 5.拷贝配置文件
mkdir /usr/local/redis/etc
cp redis.conf /usr/local/redis/etc/redis.conf

# 6.添加软连接
ln -s /usr/local/redis/bin/* /usr/local/bin/

/usr/local/redis/bin 目录下文件详解:

|------------------|----------------------------------------|
| redis-benchmark | redis 性能测试工具,测试 Redis 在你的系统及你的配置下的读写性能 |
| redis-check-aof | 检查 aof 日志的工具 |
| redis-check-dump | 检查 rdb 日志的工具 |
| redis-cli | 连接用的客户端 |
| redis-server | redis 服务进程 |

a. 解决报警信息

① 修改用户打开的最大文件数

# 临时修改
ulimit -n 102400
ulimit -n 					# 102400

# 永久修改
vim /etc/security/limits.conf
	*	soft	nofile	102400
	*	hard	nofile	102400

② 修改内核参数

echo -e "net.core.somaxconn = 511\nvm.overcommit_memory = 1" >> /etc/sysctl.conf 
sysctl -p

③ 重新启动服务:redis-server /usr/local/redis/etc/redis.conf

b. 后台运行redis

默认情况,Redis 不是在后台运行,我们需要把 redis 放在后台运行

① 修改配置文件:vim /usr/local/redis/etc/redis.conf

#修改 no 为 yes 
daemonize yes 
#默认监控 127.0.0.1 添加本机 IP 192.168.1.11 
bind 127.0.0.1 -::1 192.168.137.253
# 指定日志文件
logfile "/var/log/redis/redis_6379.log"

② 创建日志目录:mkdir /var/log/redis

③ 启动服务

redis-server /usr/local/redis/etc/redis.conf 
netstat -antup | grep redis

④ 测试redis

redis-cli
127.0.0.1:6379> ping
PONG
c. 停止redis服务
# 方式一
redis-cli shutdown 
# 方式二
pkill redis-server
d. redis 开机自启
chmod +x /etc/rc.d/rc.local 
echo " /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf" 
>> /etc/rc.d/rc.local
e. redis 数据存储

redis 的存储分为内存存储、磁盘存储和 log 文件三部分,配置文件中有三个参数对其进行配置。

  • save seconds updates:save:指出在多长时间内,有多少次更新操作,就将数据同步到数据文件。这个可以多个条件配合,比如默认配置文件中的设置,就设置了三个条件。
  • appendonly yes/no :appendonly:指出是否在每次更新操作后进行日志记录,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为 redis 本身同步数据文件是按上面的 save 条件来同步的,所以有的数据会在一段时间内只存在于内存中。
  • appendfsync no/always/everysec :appendfsync 配置,no 表示等操作系统进行数据缓存同步到磁盘,always 表示每次更新操作后调用 fsync()将数据写到磁盘,everysec表示每秒同步一次。
f. redis 认证设置

① 修改redis.conf 配置文件

# 启用此项,并指定密码即可
# requirepass foobared 
requirepass 123456

② 重启服务

# 重启redis
redis-cli shutdown 
redis-server /usr/local/redis/etc/redis.conf

③ 测试

# 连接redis 客户端
redis-cli
# 直接查询,报错
127.0.0.1:6379> select 1
(error) NOAUTH Authentication required.

# 输入密码
127.0.0.1:6379> auth 123456
# 再次查询成功
127.0.0.1:6379> select 1

④ 登陆的时候使用密码:redis-cli -a 123456

g. redis 配置文件
#是否作为守护进程运行
daemonize yes 

#如以后台进程运行,则需指定一个 pid,默认为/var/run/redis.pid 
pidfile redis.pid 

#绑定主机 IP,默认值为 127.0.0.1 
#bind 127.0.0.1

#Redis 默认监听端口
port 6379 

#客户端闲置多少秒后,断开连接,默认为 300(秒)
timeout 300 

#日志记录等级,有 4 个可选值,debug,verbose(默认值),notice,warning 
loglevel verbose 

#指定日志输出的文件名,默认值为 stdout,也可设为/dev/null 屏蔽日志
logfile stdout 

#可用数据库数,默认值为 16,默认数据库为 0 
databases 16 

#保存数据到 disk 的策略
#当至少有一条 Key 数据被改变时,900 秒刷新到 disk 一次
save 900 1

#当至少有 10 条 Keys 数据被改变时,300 秒刷新到 disk 一次
save 300 10 

#当至少有 1w 条 keys 数据被改变时,60 秒刷新到 disk 一次
save 60 10000

#当 dump.rdb 数据库的时候是否压缩数据对象
rdbcompression yes

#存储和加载 rdb 文件时校验
rdbchecksum yes

#本地数据库文件名,默认值为 dump.rdb
dbfilename dump.rdb

#后台存储错误停止写。
stop-writes-on-bgsave-error yes 

#本地数据库存放路径,默认值为 ./ 
dir /var/lib/redis/


########### Replication ##################### 
#Redis 的复制配置
# replicaof <masterip> <masterport> 当本机为从服务时,设置主服务的 IP 及端口
# masterauth <master-password> 当本机为从服务时,设置主服务的连接密码
#连接密码
# requirepass foobared 

#最大客户端连接数,默认不限制
# maxclients 128 

#最大内存使用设置,达到最大内存设置后,Redis 会先尝试清除已到期或即将到期的 Key,
#当此方法处理后,一旦到达最大内存设置,将无法再进行写入操作。
# maxmemory <bytes>

#是否在每次更新操作后进行日志记录,如果不开启,可能会在断电时导致一段时
#间内的数据丢失。因为 redis 本身同步数据文件是按上面 save 条件来同步的,所以
#有的数据会在一段时间内只存在于内存中。默认值为 no 
appendonly no

#更新日志文件名,默认值为 appendonly.aof 
#appendfilename 
#更新日志条件,共有 3 个可选值。no 表示等操作系统进行数据缓存同步到磁盘,
#always 表示每次更新操作后调用 fsync()将数据写到磁盘,everysec 表示每秒同步一
#次(默认值)。
# appendfsync always 
appendfsync everysec 

# appendfsync no 
#当 slave 失去与 master 的连接,或正在拷贝中,如果为 yes,slave 会响应客户端
#的请求,数据可能不同步甚至没有数据,如果为 no,slave 会返回错误"SYNC with 
#master in progress"
replica -serve-stale-data yes 

#如果为 yes,slave 实例只读,如果为 no,slave 实例可读可写。
replica -read-only yes 

# 在 slave 和 master 同步后(发送 psync/sync),后续的同步是否设置成
#TCP_NODELAY . 假如设置成 yes,则 redis 会合并小的 TCP 包从而节省带宽,但会增
#加同步延迟(40ms),造成 master 与 slave 数据不一致 假如设置成 no,则 redis 
#master 会立即发送同步数据,没有延迟
repl-disable-tcp-nodelay no 

#如果 master 不能再正常工作,那么会在多个 slave 中,选择优先值最小的一个
#slave 提升为 master,优先值为 0 表示不能提升为 master。
replica-priority 100

#### LIMITS #### 
#客户端并发连接数的上限是 10000,到达上限,服务器会关
#闭所有新连接并返回错误"max number of clients reached"
maxclients 10000 

#设置最大内存,到达上限,服务器会根据驱逐政策(eviction 
#policy)删除某些键值,如果政策被设置为 noeviction,那么 redis 只读,对于增加内
#存的操作请求返回错误。
maxmemory 15G 

#### LUA SCRIPTING #### 
#一个 Lua 脚本最长的执行时间为 5000 毫秒(5 秒),如果
#为 0 或负数表示无限执行时间。
lua-time-limit 5000 

#### SLOW LOG ####
#当某个请求执行时间(不包括 IO 时间)超过
#10000 微妙(10 毫秒),把请求记录在慢日志中 ,如果为负数不使用慢日志,如果
#为 0 强制记录每个指令。
slowlog-log-slower-than 10000 

#慢日志的最大长度是 128,当慢日志超过 128 时,最先
#进入队列的记录会被踢出来,慢日志会消耗内存,你可以使用 SLOWLOG RESET 清
#空队列回收这些内存。
slowlog-max-len 128

#### ADVANCED CONFIG ####
#较小的 hash 可以通过某种特殊的方式进行编码,以
#节省大量的内存空间,我们指定最大的条目数为 512,每个条目的最大长度为 64。
hash-max-ziplist-entries 512 
hash-max-ziplist-value 64 
list-max-ziplist-entries 512 
list-max-ziplist-value 64 #同上。
zset-max-ziplist-entries 128 
zset-max-ziplist-value 64 #同上。

#重新哈希 the main Redis hash table
#(the one mapping toplevel keys to values),这样会节省更多的空间。
activerehashing yes

#对客户端输出缓冲进行限制可以强迫那
#些就不从服务器读取数据的客户端断开连接。对于 normal client,第一个 0 表示取
#消 hard limit,第二个 0 和第三个 0 表示取消 soft limit,normal client 默认取消限
#制,因为如果没有寻问,他们是不会接收数据的。
client-output-buffer-limit normal 0 0 0 

#对于 slave client 和 MONITER 
#client,如果 client-output-buffer 一旦超过 256mb,又或者超过 64mb 持续 60 秒,
#那么服务器就会立即断开客户端连接。
client-output-buffer-limit slave 256mb 64mb 60 

#对于 pubsub client,如果 clientoutput-buffer 一旦超过 32mb,
#又或者超过 8mb 持续 60 秒,那么服务器就会立即断开客户端连接。
client-output-buffer-limit pubsub 32mb 8mb 60 


#### INCLUDES #### 
#包含一些可以重用的配置文件。
#hz 10 #Redis 调用内部函数来执行后台 task,比如关闭已经 timeout 连接,删除
#过期的 keys 并且永远不会被访问到的,执行频率根据 hz 后面的值来确定。在 Redis 
#比较空闲的时候,提高这个值,能充分利用 CPU,让 Redis 相应速度更快,可取范
#围是 1-500 ,建议值为 1--100 
include /path/to/conf 

# 当子进程重写 AOF 文件,以下选项开启时,
# AOF 文件会每产生 32M 数据同步一次。这有助于更快写入文件到磁盘避免延迟
aof-rewrite-incremental-fsync yes 


################ VIRTUAL MEMORY ########### 
#是否开启 VM 功能,默认值为 no 
vm-enabled no 
# vm-enabled yes

#虚拟内存文件路径,默认值为/tmp/redis.swap,不可多个 Redis 实例共享
vm-swap-file /tmp/redis.swap

#将所有大于 vm-max-memory 的数据存入虚拟内存,无论 vm-max-memory 设置多
#小,所有索引数据都是内存存储的 (Redis 的索引数据就是 keys),也就是说,
#当 vmmax-memory 设置为 0 的时候,其实是所有 value 都存在于磁盘。默认值为 0。
vm-max-memory 0 
vm-page-size 32 
vm-pages 134217728 
vm-max-threads 4

①②③④⑤⑥⑦⑧⑨⑩

相关推荐
水月梦镜花4 小时前
redis:list列表命令和内部编码
数据库·redis·list
掘金-我是哪吒5 小时前
微服务mysql,redis,elasticsearch, kibana,cassandra,mongodb, kafka
redis·mysql·mongodb·elasticsearch·微服务
ketil277 小时前
Ubuntu 安装 redis
redis
王佑辉8 小时前
【redis】redis缓存和数据库保证一致性的方案
redis·面试
Karoku0669 小时前
【企业级分布式系统】Zabbix监控系统与部署安装
运维·服务器·数据库·redis·mysql·zabbix
gorgor在码农9 小时前
Redis 热key总结
java·redis·热key
想进大厂的小王9 小时前
项目架构介绍以及Spring cloud、redis、mq 等组件的基本认识
redis·分布式·后端·spring cloud·微服务·架构
Java 第一深情9 小时前
高性能分布式缓存Redis-数据管理与性能提升之道
redis·分布式·缓存
minihuabei14 小时前
linux centos 安装redis
linux·redis·centos
monkey_meng16 小时前
【Rust中多线程同步机制】
开发语言·redis·后端·rust