redis5.0安装和开机启动

一,添加用户,下载,授权,安装

groupadd -r redis && useradd -r -g redis -s /sbin/nologin -M redis
yum install wget gcc make -y
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
tar -zvxf redis-5.0.7.tar.gz
mv /root/redis-5.0.7 /usr/local/redis
chown -R redis.redis /usr/local/redis
chmod 755 /usr/local/redis
cd /usr/local/redis
make
make PREFIX=/usr/local/redis install

二,配置文件

vim /usr/local/redis/redis.conf

1 设置后台方式启动

通过 /daemonize  查找到属性,默认是no,更改为yes即可。

2 设置日志文件

logfile = "/var/log/redis/redis.log"

创建日志文件夹和授权

mkdir  /var/log/redis
chown -R redis.redis /var/log/redis

3 设置密码

requirepass  123456

三,复制客户端脚本到bin目录,客户启动。

cp /usr/local/redis/bin/redis-cli  /usr/bin/redis-cli

四,启动和停止

启动:sudo -u redis /usr/local/redis/bin/redis-server  /usr/local/redis/redis.conf 
停止:sudo -u redis /usr/local/redis/bin/redis-cli -h 172.16.0.38 -p 6379 shutdown

五,测试连接
redis-cli -h 172.16.0.36 -p 6379 -a 123456

六,配置Redis开机启动

#创建服务文件
vim /usr/lib/systemd/system/redis.service

[Unit]
Description=Redis Server
After=network.target

[Service]
User=redis
Group=redis
Type=forking
ExecStart=/usr/local/redis/bin/redis-server  /usr/local/redis/redis.conf
ExecStop=/usr/local/redis/bin/redis-cli -h 172.16.0.38 -p 6379 shutdown
Restart=always
PrivateTmp=true

[Install]
WantedBy=multi-user.target

重新加载
systemctl daemon-reload
#设置Redis服务开机启动
systemctl enable redis
#启动Redis服务
systemctl start redis
systemctl status redis
systemctl stop redis

访问:redis-cli -h 172.16.0.38 -p 6379 -a 123456

故障

Job for redis.service failed because the control process exited with error code. See "systemctl status redis.service" and "journalctl -xe" for details.
日志文件是root 用户 和root 用户组,授权或删除
ll /var/log/redis/

七 redis使用

1 连接

无密码连接

连接redis
redis-cli -h 127.0.0.1 -p 6379
 
[root@redis ~]# redis-cli
127.0.0.1:6379> ping
PONG
 
127.0.0.1:6379> get key
 
127.0.0.1:6379> info

带密码连接

第一种
redis-cli -h 127.0.0.1 -p 6379 -a password

第二种
127.0.0.1:6379> AUTH password
OK
127.0.0.1:6379> set k1 v1
OK

关闭命令pkill redis   kill

关闭前先执行bgsave

2 redis动态增加内存,动态配置,不需要重启

redis 127.0.0.1:6379> config get maxmemory
1) "maxmemory"
2) "3221225472"
redis 127.0.0.1:6379> config set maxmemory 4294967296
OK
redis 127.0.0.1:6379> config get maxmemory
1) "maxmemory"
2) "4294967296"

3 参数

redis 127.0.0.1:6379> config get *
CONFIG SET
CONFIG SET parameter value
CONFIG SET 命令可以动态地调整 Redis 服务器的配置(configuration)而无须重启。
你可以使用它修改配置参数,或者改变 Redis 的持久化(Persistence)方式。
CONFIG SET 可以修改的配置参数可以使用命令 CONFIG GET * 来列出,所有被 CONFIG SET 修改的配置参数都会立即生效。

4 rdb文件恢复

先停掉redis

find  / -name dump.rdb

将dump.rdb文件复制到所在文件目录下

重启redis

配置文件设置

appendonly no

5 查看有多少个key

DBSIZE
查看某个Key是否存在
EXISTS k1 

状态码:
0 表示这个key不存在 
1 表示这个key存在
N 表示存在N个key

删除key
DEL k1 
DEL k1 k2 

状态码:
0   表示这个key不存在
1   表示这个key存在,并且删除成功了
N   表示N个key存在,并且删除成功了N个key

设置过期时间
EXPIRE k1 10

状态码:
0   这个key不存在
1   这个key存在,并且设置过期时间成功
 

6 RDB和AOF介绍

RDB:类似于快照的形式,当前内存里的状态持久化到硬盘里
优点:压缩格式/恢复速度快
缺点:不是实时的,可能会丢失数据,操作比较重
    
AOF:类似于mysql的binlog,可以设置为每秒/每次操作以追加的形式持久化
优点:安全,最多损失1秒的数据,可读
缺点:文件比较大,恢复速度慢

配置RDB
save 900 1
save 300 10
save 60 10000
dbfilename redis.rdb
dir /app/data/redis_6379/

RDB结论
1.没有配置save参数时,shutdown不会持久化保存
2.没有配置save参数时,可以手动执行bgsave触发持久化
3.在配置了save参数后,shutdown,kill,pkill都会自动触发bgsave
4.恢复的时候,rdb文件名要和配置文件里写的一样。
5.RDB高版本兼容低版本,低版本不兼容高版本。

AOF配置
appendonly yes
appendfilename "redis.aof"
appendfsync everysec

结论:
当aof和rdb同时存在时,重启redis会优先读取aof的内容。

aof和rdb实验
实验背景:
aof和rdb同时存在的时候,redis重启会读取哪一个数据?
实验步骤:
set k1 v1
set k2 v2 
bgsave 
RDB k1 k2
mv redis.rdb /opt/  
    
flushall
set k3 v3
set k4 v4
AOF k3 k4
mv redis.aof /opt/
  
pkill redis
rm -rf /data/redis_6379/*
mv /opt/redis.rdb .
mv /opt/redis.aof .
  
redis-server /opt/redis_6379/conf/redis.conf
redis-cli 
keys * 
结论:
当aof和rdb同时存在时,重启redis会优先读取aof的内容。

如何选择是rdb还是aof

https://redis.io/topics/persistence
1.开启混合模式
2.开启aof
3.不开启rdb
4.rdb采用定时任务的方式定时备份

8 aof文件故障模拟实验结论
1.aof文件损坏之后,使用修复工具,一刀流,从aof文件出错的地方开始到最后全部删掉
2.任何操作之前,先备份数据
3.aof备份一般情况最多损失1秒的数据

9.实验:如果设置了过期时间,恢复数据会如何处理
1.aof文件会记录下过期的时间
2.恢复的时候会去对比记录的过期时间和当前时间,如果超过了,就删除key
3.key的过期时间不受备份恢复影响


禁用危险命令
rename-command CONFIG ""
rename-command KEYS ""
rename-command SHUTDOWN ""
rename-command FLUSHALL ""
rename-command DEL ""
rename-command FLUSHDB ""

7 应用场景

1.缓存-键过期时间
  把session会话存在redis,过期删除
  缓存用户信息,缓存Mysql部分数据,用户先访问redis,redis没有再访问mysql,然后回写给redis
  商城优惠卷过期时间
2.排行榜-列表&有序集合
  热度/点击数排行榜
  直播间礼物积分排行
3.计数器-天然支持计数器
  帖子浏览数
  视频播放数
  评论数
  点赞/踩
4.社交网络-集合
  粉丝
  共同好友 
  兴趣爱好
  标签
5.消息队列-发布订阅
  配合ELK缓存收集来的日志

多种数据结构
  字符串,哈希,列表,集合,有序集合,地理位置


数据持久化
  所有的数据都运行在内存中
  支持2种格式持久化数据AOF RDB AOF&RDB
自带多种高可用架构
  主从
  哨兵
  集群

redis官网
https://redis.io/

版本选择
2.x     very old
3.x     redis-cluster 
4.x     混合持久化
5.x     新增加了流处理类型 最新稳定版 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值