redis进阶

本文深入探讨Redis的配置选项,包括单位、模块、网络、日志、数据库、持久化策略等,重点讲解RDB快照与AOF两种持久化方法,以及主从复制和哨兵模式的实现。

Redis配置文件解析

单位[Unit]:bytes
1k => 1000 bytes
1kb => 1024 bytes
1m => 1000000 bytes
1mb => 10241024 bytes
1g => 1000000000 bytes
1gb => 1024
1024*1024 bytes

	# 单位是大小写不敏感的,所以 1GB 和 1Gb 是一样的

== include:==
类似于spring的import标签
模块[Modules]:
网络[Network]:
bind ip地址:绑定连接本机redis服务器的redis客户端ip
protected-mode no:如果想从其它机子上的客户端连接本机的redis服务器,必须将该值设置为no

通用配置[General
daemonize yes:设置redis作为后台服务进程启动

日志级别:
debug:适用于开发测试环境
verbose:很少使用
verbose:默认值,适用于生产级别
warning:严重问题使用这个级别

pidfile: 指定pid文件的路径和名称【pid文件里面存了redis 的进程id:pid】
logfile: 指定存放redis服务器产生日志的文件路径和名称,默认把日志信息存到linux系统的/dev/null目录【无底洞】


databases 16:redis默认带了16个库

快照:SNAPSHOTTING
复制:REPLICATION

安全:Security
requirepass 密码:设置密码
auth 密码:身份认证

客户端:CLIENTS
内存管理:MEMORY MANAGEMENT
maxmemory :修改最大内存大小
MAXMEMORY POLICY:当数据量超过redis的内存大小的时候,redis会使用不同的策略来移除redis服务器缓存中的一部分数据
# volatile-lru -> Evict using approximated LRU among the keys with an expire set.

	# allkeys-lru -> Evict any key using approximated LRU.\
	
	# volatile-lfu -> Evict using approximated LFU among the keys with an expire set.
	# allkeys-lfu -> Evict any key using approximated LFU.
	
	# volatile-random -> Remove a random key among the ones with an expire set.
	# allkeys-random -> Remove a random key, any key.
	
	# volatile-ttl -> Remove the key with the nearest expire time (minor TTL)
	# noeviction -> Don't evict anything, just return an error on write operations

redis的持久化

方法一

RDB:快照[默认用的就这种]:

持久化策略:
    save 900 1
	save 300 10
	save 60 10000
手动指定redis进行持久化操作:
    save:[在后台完成,而且是以同步的方式]   如果是同步的方式这个时候  其他客户端就不能进行操作了
	bgsave:【建议使用这种,在后台完成,而且是以异步的方式】   再开一个线程进行存
	shutdown: 
 运维人员:
   rdb文件做一个备份
 
 优点:这种速度会快一些
 缺点:丢的数据优点多
方法二

AOF: 追加文件
aof日志的全称是append only file,从名字上我们就能看出来,它是一个追加写入的日志文件。

开启Aof:
   将appendonly no 设置为appendonly yes即可!
	appendfilename "appendonly.aof"   保存的文件名为:appendonly.aof	
AOF的持久化策略:
	在Redis的配置文件中存在三种同步方式,它们分别是:
	 appendfsync always #每次有数据修改发生时都会写入AOF文件。
	 appendfsync everysec #每秒钟同步一次,该策略为AOF的缺省策略。
	 appendfsync no #从不同步。高效但是数据不会被持久化。
   
   AOF 的默认策略为每秒钟 fsync 一次,在这种配置下,Redis 仍然可以保持良好的性能,并且就算发生故障停机,也最多只会丢失一秒钟的数据
修复aof文件:
   redis-check-aof --fix appendonly.aof

当RDB和AOF同时存在的时候,Aof的优先级会高一些!

Aof:持久化的频率比较高,丢失的数据比较少!

选择的标准,如果性能要求比较高,就使用RDB方式[默认的],
      如果数据一致性要求比较高,就使用AOF的方式

主从复制

作用:读写分离、容灾恢复、备份
具体步骤:
1.配从(库)不配主(库)
2.从库配置:slaveof 主库IP 主库端口
注意:
1.每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件
2.info replication 查看当前节点的状态【主机、从机】

哨兵模式:解决master高可用问题
含义:如果master故障了,在其它的slave节点根据投票数决定由谁从 从库转换为主库

具体步骤:
    新建sentinel.conf文件,名字绝不能错
	   sentinel monitor 被监控数据库名字(自己起名字) 127.0.0.1 6379 1
	   sentinel monitor 被监控数据库名字(自己起名字) 127.0.0.1 6380 1
	   sentinel monitor 被监控数据库名字(自己起名字) 127.0.0.1 6381 1
	   
	   上面最后一个数字1,表示主机挂掉后salve投票看让谁接替成为主机,得票数多少后成为主机
	redis-sentinel /usr/common/sentinel.conf 

Redis作为消息队列【了解】

必须先订阅再发布
订阅:subscribe c1 c2
发布:publish c1 “hello world”

也可以批量订阅:psubscibe c*

Redis的事务【不太重要】

multi:类似于mysql的begin transaction:开启事务
exec:类似于mysql的commit:提交事务

discard:类似于mysql的rollback:回滚事务

### Redis 的高级用法和特性 #### 1. 使用带有自动补全和语法高亮的交互式 CLI 为了更高效地管理和操作 Redis 数据库,可以采用具备自动完成命令以及提供语法高亮特性的客户端工具。这种增强型CLI能够显著提升用户体验,在执行复杂查询时尤为有用[^1]。 ```bash # 安装并运行支持自动完成与语法高亮特性的Redis CLI pip install interactive-redis-cli interactive_redis_cli ``` #### 2. 启用多种持久化机制保障数据安全 通过配置 `redis.conf` 文件中的设置项来激活 RDB (快照) 和 AOF (追加仅文件) 这两种不同的持久化策略。这有助于防止意外断电或其他异常情况造成的数据丢失风险。当容器启动时指定挂载外部卷用于存储这些持久化的数据库副本,从而实现跨重启后的状态保持[^2]。 ```dockerfile # Docker Compose 或者直接使用Docker指令启动带持久化的Redis实例 docker run --name redis \ -v /local/path/to/data:/data \ -v /local/path/to/conf/redis.conf:/usr/local/etc/redis/redis.conf \ -p 6379:6379 -d redis \ redis-server /usr/local/etc/redis/redis.conf ``` #### 3. 创建受限账户提高安全性 对于生产环境下的 Redis 实例来说,创建一个专门的服务账号是非常重要的一步。该账号不具备 shell 访问权限,并且其家目录也被移除以减少潜在的安全威胁。此外还将 Redis 可执行程序及其工作路径赋予此特定用户组所有权,确保只有授权人员才能对其进行修改或访问[^3]。 ```bash # 添加不具Shell登录能力也不拥有Home Directory的新用户 sudo useradd -M -s /sbin/nologin redis # 更改Redis安装目录所属权给新建立的用户 chown -R redis:redis /path/to/installation/ ``` #### 4. 构建分布式集群架构扩展性能 随着业务增长带来的负载压力增大,单机版 Redis 很难满足需求。此时可以通过构建多节点组成的集群模式来进行横向扩容。每个节点负责处理一部分键空间内的读写请求,而整个系统的吞吐量则取决于所有成员共同协作的结果。在实际部署过程中需注意各服务器间网络连接质量及延迟等因素的影响[^4]。 ```bash # 分别于不同主机上依次启动多个Redis服务端进程作为集群组成部分之一 /usr/local/redis/src/redis-server /etc/redis/node-01.conf /usr/local/redis/src/redis-server /etc/redis/node-02.conf ... ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值