redis操作笔记
redis的安装
1.首先官网(redis.io)下载对应redis的包
2.将下载的包移动到/opt下,并解压
3.解压并进入目录
[root@test opt]# cd /opt/redis-2.8.19
4.编译
[root@test redis-2.8.19]# make
[root@test redis-2.8.19]# cd src/
[root@test src]# make install PREFIX=/opt/redis
[root@test redis-2.8.19]# rm -rf /opt/redis-2.8.19
5.复制配置文件启动
[root@test etc]# cd /opt/redis
[root@test redis]# mkdir {etc,run,log}
[root@test etc]# mkdir /var/data/redis -p
[root@test etc]# cat /opt/redis/etc/redis.conf
daemonize yes
pidfile /opt/redis/run/redis-activity.pid
bind 192.168.25.221
port 6379
timeout 300
loglevel notice
logfile /opt/redis/log/redis-activity.log
databases 16
save 900 1
save 300 10
save 60 10000
rdbcompression yes
dbfilename suixin_rdb.rdb
dir /var/data/redis/
requirepass suixin
maxmemory 2073741824
appendonly yes
appendfilename suixin_aof.aof
appendfsync everysec
no-appendfsync-on-rewrite no
slowlog-log-slower-than 10000
slowlog-max-len 1024
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
activerehashing yes
6.启动链接测试
[root@test etc]#/opt/redis/bin/redis-server /opt/redis/etc/redis.conf
[root@test etc]# /opt/redis/bin/redis-cli -h 192.168.25.221 -p 6379
192.168.25.221:6379> auth suixin #登录密码
OK
7.常用redis操作命令
获取数据目录
192.168.25.222:6399> config get dir
1) "dir"
2) "/var/data/redis"
redis的备份
1.save备份文件
[root@test etc]# /opt/redis/bin/redis-cli -h 192.168.25.223 -p 6399
192.168.25.223:6399> auth suixin
OK
192.168.25.223:6399> save
OK
2.恢复数据
如果需要恢复数据,只需将备份文件 (suixin_rdb) 移动到 redis 安装目录并启动服务即可。获取 redis 目录可以使用 CONFIG 命令.
3.Bgsave
创建 redis 备份文件也可以使用命令 BGSAVE,该命令在后台执行。
实例
127.0.0.1:6379> BGSAVE
Background saving started
redis的主从同步
master:192.168.25.221
slave:192.168.25.223
1.master不用动,数据过大,拷贝redis数据目录到salve机器上
2.修改配置文件并启动redis
slave操作:
[root@test etc]# vi /opt/redis/etc/redis.conf
...增加下面两行...
slaveof 192.168.25.221 6379
masterauth suixin
[root@test etc]# /opt/redis/bin/redis-server /opt/redis/etc/redis.conf
[root@test etc]# /opt/redis/bin/redis-cli -h 192.168.25.223 -p 6399
192.168.25.223:6399> auth suixin
OK
192.168.25.223:6399> info
...
# Replication
role:slave
master_host:192.168.25.221
master_port:6379
master_link_status:up #这里显示up即为成功
master_last_io_seconds_ago:6
master_sync_in_progress:0
slave_repl_offset:8007
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
...
3.master写数据
[root@test etc]# /opt/redis/bin/redis-cli -h 192.168.25.221 -p 6379
192.168.25.221:6379> auth suixin
OK
192.168.25.221:6379> set suixin 22
OK
**从库获取值测试**
192.168.25.223:6399> get suixin
"22"
redis配置文件解释
daemonize yes #如需要在后台运行,把该项的值改为yes
pidfile /opt/redis/run/redis-activity.pid
bind 192.168.25.222 #redis绑定ip
port 6379 #redis的端口
timeout 300
loglevel notice
logfile /opt/redis/log/redis-activity.log
databases 16 #设置数据库的个数
save 900 1 #设置redis进行数据库镜像的频率
save 300 10
save 60 10000
rdbcompression yes #在进行镜像备份时,是否进行压缩
dbfilename redis-ucenter-bas.rdb #redis的数据保存的名称
dir /var/data/redis/ #redis数据保存路径
slaveof 192.168.25.223 6379 #设置该数据库为其他数据库的从数据库,就是主库的ip和端口
masterauth suixin #当主数据库连接需要密码验证时,在这里设定
#slave-server-stale-data yes
requirepass suixin #设置客户端连接后进行任何其他指定前需要使用的密码
maxmemory 2073741824 #设置redis能够使用的最大内存
appendonly yes #开启appendonly模式后,redis会把每一次所接收到的写操作都追加到appendonly.aof文件中,当redis重新启动时,会从该文件恢复出之前的状态,简称AOF模式开启
appendfilename redis-ucenter-bas.aof #保存数据AOF的名称
appendfsync everysec #下文注释1,个人理解是同步的频率
no-appendfsync-on-rewrite no ##下文注释2
slowlog-log-slower-than 10000
slowlog-max-len 1024
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
activerehashing yes
注释1
fsync()调用告诉操作系统将数据真实的写入磁盘而不是放到缓冲区中,一些操作系统会真实的执行请求,还有一些操作系统只会尽力的尝试。
Redis支持3种不同的模式:
no:不即时同步,由操作系统控制何时刷写到磁盘上,这种模式速度最快;
always:每次只写日志,速度较慢,但最安全;
everysec:每秒钟同步一次,折中的方案。
默认的模式是“everysec”,它通常是在速度和数据安全之间折中的方法。如果你可以控制操作系统在Redis需要的时候去刷写缓冲区那可以使用“no”模式,能够提供更好的性能(但如果你能接受一些数据丢失,可以考虑默认的持久化模式–快照方式),相反,使用“always”模式很慢,但是它比“everysec”模式要安全一点。
如果不确定,就使用“everysec”。
注释2
当使用AOF的fsync方案设置为“always”或“everysec”时,后台的存储进程会执行大量的磁盘I/O操作,在一些Linux架构中,Redis在fsync()调用时可能会阻塞很久。这个问题当前并没有修复,即使是在一个不同的线程执行fsync也将会阻塞我们的同步写调用。
为了缓解这个问题,可以使用以下选项,它将会在有一个BGSAVE或BGREWRITEAOF正在运行时,阻止主进程调用fsync()。
这意味着有另一个子进程在存储时,Redis的持久性等同于“appendfsync none”。在实践中,意味着在最坏的情况下它可能丢失多达30秒的日志(默认的Linux设置)。
如果你有潜在的问题需要更改它为“yes”。否则从持久性的观点来看“no”是最安全的选择
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类