redis之安装部署

☆ redis之安装部署
☆ redis之基本使用
☆ redis之应用场景
☆ redis之源码制作rpm包

1、redis-6.2.12单机部署

// 安装C 语言的编译环境
yum install -y centos-release-scl scl-utils-build devtoolset-8-toolchain
scl enable devtoolset-8 bash
// 测试 gcc版本 
gcc --version

tar -zxvf redis-6.2.12.tar.gz
cd redis-6.2.12

// 编译
make
# make distclean
// 安装
# make install
make install PREFIX=/usr/local/redis
# make dist

cp /root/redis-6.2.12/redis.conf /etc/redis.conf
修改/etc/redis.conf里面的
# 设置外网连接;1: 将bind配置项注释
#bind 127.0.0.1
# 设置外网连接;2: 将protected-mode配置由yes修改为no
protected-mode no
# 后台运行redis
daemonize yes
# 设置密码
requirepass foobared

# 启动命令
/usr/local/redis/bin/redis-server /etc/redis.conf

2、redis-6.2.12主从+哨兵部署

1、Slave启动成功连接到master后会发送一个sync命令
2、Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,
3、在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步
4、全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
5、增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步
6、但是只要是重新连接master,一次完全同步(全量复制)将被自动执行

3、redis-6.2.12Cluster部署

1、Redis群集TCP端口

每个Redis群集节点都需要打开两个TCP连接。
1)用于为客户端提供服务的普通Redis命令执行端口,例如6379。
2)集群总线端口偏移是固定的,始终为10000,例如16379。(该端口用于集群总线,即使用二进制协议的节点到节点通信通道。节点使用集群总线进行故障检测,配置更新,故障转移授权等。客户端永远不应尝试与群集总线端口通信,但始终使用正常的Redis命令端口,但请确保在防火墙中打开两个端口,否则Redis群集节点将无法通信。)

1、Redis群集数据分片

Redis Cluster不使用一致的散列,而是使用不同形式的分片,其中每个键在概念上都是我们称之为散列槽的一部分。

Redis集群中有16384个散列槽,为了计算给定密钥的散列槽,我们只需采用密钥模数16384的CRC16。

Redis群集中的每个节点都负责哈希槽的子集,例如,您可能拥有一个包含3个节点的群集,其中:

节点A包含从0到5500的散列槽。
节点B包含从5501到11000的散列槽。
节点C包含从11001到16383的散列槽。

4、redis提供的命令及工具

redis-benchmark:性能测试工具,可以在自己本子运行,看看自己本子性能如何。
redis-check-aof:修复有问题的AOF文件,rdb 和 aof 后面讲。
redis-check-dump:修复有问题的 dump.rdb 文件。
redis-sentinel:redis集群使用。
redis-server:redis服务启动命令。
redis-cli:客户端,操作入口。

5、redis配置文件

[root@michael opt]# cat ./redis.conf | grep -v '#' | grep -v  ^$
daemonize yes
pidfile /var/run/redis.pid
port 6379
bind 127.0.0.1
tcp-backlog 511
timeout 0			#客户端闲置多长时间后关闭连接,默认此参数为0即关闭此功能
tcp-keepalive 0
loglevel notice	 #日志级别,可用的级别有debug,verbose,notice,warning
logfile ""		 #log文件输出位置,如果进程以守护进程的方式运行,此处又将输出文件设置为stdout的话,就会将日志信息输出到/dev/null里面去了
databases 16	 #数据库的数量,默使用0库,可用select <dbid>命令在连接上指定数据库id
save 900 1		#save <seconds> <changes>指定在x时间内刷新次数达到y次会将数据同步到数据文件;
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes		#指定存储至本地数据库时是否压缩文件,默认为yes即启用存储;
rdbchecksum yes
dbfilename dump.rdb		#指定本地数据库文件名
dir ./					#指定本地数据文件存放位置
maxclients 128		 #设置同一时间最大客户连接数,默认无限制;redis可以同时连接的客户端数为redis程序可以打开的最大文件描述符,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients reached错误信息
requirepass footbared       #客户端连接redis时需要通过AUTH<password>命令提供密码,默认关闭
slaveof <masterip> <masterport>	#设置master的IP及PORT,此redis启动时自动和master进行数据同步
masterauth <master-password>	#当master设置了密码保护时,slave服务连接master的密码;
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
appendonly no		#指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no
appendfilename appendonly.aof		#指定跟新日志文件名默认为appendonly.aof
appendfsync everysec	 #指定更新日志的条件,有三个可选参数no:表示等操作系统进行数据缓存同步到磁盘(快),always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全), everysec:表示每秒同步一次(折衷,默认值);
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
maxmemory <bytes>	 #指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis新的vm机制,会把Key存放内存,Value会存放在swap区

6、redis的数据淘汰策略

MySQL 里有2000w 数据,redis 中只存20w 的数据,如何保证redis 中的数据都是热点数据?
答: Redis 内存数据集大小上升到一定大小的时候, 就会施行数据淘汰策略。
相关知识:Redis 提供6 种数据淘汰策略:
volatile-lru:从已设置过期时间的数据集( server.db[i].expires)中挑选 最近最少使用的数据淘汰
volatile-ttl:从已设置过期时间的数据集( server.db[i].expires)中挑选将 要过期的数据淘汰
volatile-random:从已设置过期时间的数据集( server.db[i].expires)中 任意选择数据淘汰
allkeys-lru:从数据集( server.db[i].dict)中挑选 最近最少使用的数据淘汰
allkeys-random:从数据集( server.db[i].dict)中 任意选择数据淘汰
no-enviction(驱逐) :禁止驱逐数据

猜你喜欢

转载自blog.csdn.net/Michael_lcf/article/details/131465604