一、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索引的数据库
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » Redis
发表评论 取消回复