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”是最安全的选择

posted @   彬彬l  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示