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

Redis 安装_第1张图片

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   当本机为从服务时,设置主服务的 IP 及端口
# masterauth  当本机为从服务时,设置主服务的连接密码
#连接密码
# requirepass foobared 

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

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

#是否在每次更新操作后进行日志记录,如果不开启,可能会在断电时导致一段时
#间内的数据丢失。因为 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

①②③④⑤⑥⑦⑧⑨⑩

你可能感兴趣的:(Redis,redis)