一、redis简介

Redis是一个开源的、遵循BSD协议的、基于内存的而且目前比较流行的键值数据库(key-value database),是一个非关系型数据库,redis 提供将内存通过网络远程共享的一种服务,提供类似功能的还有memcached,但相比memcached,redis还提供了易扩展、高性能、具备数据持久性等功能。

二、redis编译安装和多实例

tar xvf redis-5.0.7.tar.gz

cd redis-5.0.7/

make PREFIX=/apps/redis install 
#指定redis安装目录

#配置变量
echo 'PATH=/apps/redis/bin:$PATH' > /etc/profile.d/redis.sh
. /etc/profile.d/redis.sh

#准备配置文件及目录
mkdir /apps/redis/{etc,log,data,run}
#创建配置文件、日志、数据等目录
cp redis.conf /apps/redis/etc/

systemd 启动

useradd -r -s /sbin/nologin redis
chown -R redis.redis /apps/redis/
#设置目录权限
ln -sv /apps/redis/bin/redis-* /usr/bin/
#设置软连接
vim /usr/lib/systemd/system/redis.service


[Unit]
Description=Redis persistent key-value database
After=network.target

[Service]
ExecStart=/apps/redis/bin/redis-server /apps/redis/etc/redis.conf --supervised systemd
ExecStop=/bin/kill -s QUIT $MAINPID
#Type=notify 如果支持systemd可以启用此行
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755

[Install]
WantedBy=multi-user.target

systemctl daemon-reload
systemctl start  redis

redis多实例

cp  /apps/redis/etc/redis.conf   /apps/redis/etc/redis6379.conf 

#准备配置文件

#修改 备份文件的名字
grep dump.rdb redis6379.conf 
dbfilename dump.rdb
sed -i 's/dbfilename dump.rdb/dbfilename dump6379.rdb/'  redis6379.conf 

#修改日志文件
grep   "logfile"  redis6379.conf 
logfile ""
sed  -i  's#logfile ""#logfile /apps/redis/log/redis6379.log#'  redis6379.conf 

#修改pid文件
#6379 不用改了

#修改端口号
#6379 不用改了

#一次性修改6380和6381端口配置文件
cp  /apps/redis/etc/redis6379.conf   /apps/redis/etc/redis6380.conf
cp  /apps/redis/etc/redis6379.conf   /apps/redis/etc/redis6381.conf
vim /lib/systemd/system/redis6380.service 
:%s/6379/6380
vim /lib/systemd/system/redis6380.service 
:%s/6379/6381

cp  /lib/systemd/system/redis.service     /lib/systemd/system/redis6379.service
cp  /lib/systemd/system/redis.service     /lib/systemd/system/redis6380.service
cp  /lib/systemd/system/redis.service     /lib/systemd/system/redis6381.service

#6379
[Unit]
Description=Redis persistent key-value database
After=network.target


[Service]
ExecStart=/apps/redis/bin/redis-server /apps/redis/etc/redis6379.conf --
supervised systemd
ExecStop=/bin/kill -s QUIT $MAINPID
#Type=notify 如果支持systemd可以启用此行
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755


[Install]
WantedBy=multi-user.target

#6380
[Unit]
Description=Redis persistent key-value database
After=network.target


[Service]
ExecStart=/apps/redis/bin/redis-server /apps/redis/etc/redis6380.conf --supervised systemd
ExecStop=/bin/kill -s QUIT $MAINPID
#Type=notify 如果支持systemd可以启用此行
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755


[Install]
WantedBy=multi-user.target

#6381
[Unit]
Description=Redis persistent key-value database
After=network.target


[Service]
ExecStart=/apps/redis/bin/redis-server /apps/redis/etc/redis6381.conf --supervised systemd
ExecStop=/bin/kill -s QUIT $MAINPID
#Type=notify 如果支持systemd可以启用此行
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755


[Install]
WantedBy=multi-user.target

chown redis.redis /apps/redis/   -R

redis-cli 
redis-cli -p  6380
redis-cli -p  6381

二、redis 的配置优化

请添加图片描述

三、持久化

持久化功能:Redis是内存数据库,所有数据都是保存在内存中,为了避免服务器断电等原因导致Redis进程异常退出后数据永久丢失,需要定期将Redis中的数据以某种形式(数据或者命令)从内存保存到硬盘;当下次Redis重启时,利用持久化文件实现数据恢复。除此之外为了进行灾难备份,可以持久将文件拷贝到一个远程位置(比如备份服务器)。
Redis 提供两种方式进行持久化:

  • RDB 持久化:原理是将Redis在内存中的数据库记录 定时保存到磁盘上
  • AOF 持久化(append only file):原理是将Redis的 操作日志已追加的方式写入文件,类似于mysql的 binlog

打个比方
RDB持久化:
想象一下,你有一个照相机的快照功能。RDB就像这个快照功能,定期按一下“快门”(执行快照),记录下你当前的“姿势”(内存中的数据)。当你稍后查看这些照片时(从RDB恢复数据),它会让你“重现”那个时刻的状态。这种方式下,如果你在照相过程中摔倒了(服务器宕机),有可能会错过摔倒那一刻(丢失最后一次快照之后的数据变更)。

AOF持久化:
AOF则像是一个视频记录机。你所有的动作(每次写入数据)都被记录了下来。如果照相过程中摔倒了,你可以通过回看视频(AOF重做日志)来看到整个摔倒的过程,并选择恢复到你想要的“姿势”(数据状态)。这种方式下,即便你摔倒了(服务器宕机),你也有可能通过视频记录恢复到摔倒之前的状态。

总结:
总的来说,RDB的“照片”更容易整理和查看(恢复速度快),但可能会错过一些细节(数据完整性可能不足),而AOF的“视频”几乎不会错过任何细节(数据完整性更好),但整理和查看起来比较费时(恢复速度相对较慢)。在实际应用中,通常建议同时启用RDB和AOF以保障数据的安全和系统的稳定性。

四、Redis命令相关

1.INFO

显示当前节点redis运行状态信息

2.select

切换数据库,相当于在MySQL的 USE DBNAME 指令

redis-cli

127.0.0.1:6379> info cluster
# Cluster
cluster_enabled:0
127.0.0.1:6379[15]> SELECT 0
OK
127.0.0.1:6379> SELECT 1
OK
127.0.0.1:6379[1]> SELECT 15
OK
127.0.0.1:6379[15]> SELECT 16
(error) ERR DB index is out of range 127.0.0.1:6379[15]>
#只有0-15索引的数据库

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部