redis源码安装

Redis 源码安装
安装:

yum -y install gcc gcc-c++

tar zxf redis-5.0.3.tar.gz

cd redis-5.0.3 && make && make install

配置:

cp redis.conf /etc/

vim /etc/redis.conf

daemonize yes
bind 0.0.0.0
启动redis

redis-server /etc/redis.conf

Reids客户端命令的使用: redis-cli
redis-cli -h -a -p

-h redis-server的IP地址
-a 连接的密码
-p 连接的端口

常用的redis命令:
set key valuse 创建一个键值对儿
get key 查看一个键的值
keys * 查看所有的键

例子:
创建一个键值对儿: set name tom

Redis 数据类型

Redis 实现php的session共享
LAMP

  1. 在php的服务器上安装php的redis扩展

    yum -y install epel-release

    yum -y install php-pecl-redis

  2. 修改redis保存session的方式为redis

    vim /etc/php.ini

    php_value session.save_handler “redis” \保存session的方式
    php_value session.save_path “tcp://192.168.189.173:6379” \redis服务器的地址和端口

    vim /etc/httpd/conf.d/php.conf

    php_value session.save_handler “redis” \保存session的方式
    php_value session.save_path “tcp://192.168.189.173:6379” \redis服务器的地址和端口

  3. 重启httpd

    systemctl restart httpd

    给电商权限:
    chmod -R 777 .*


LNMP

  1. 在php的服务器上安装php的redis扩展

    yum -y install php-fpm

    yum -y install epel-release

    yum -y install php-pecl-redis

  2. 修改redis保存session的方式为redis

    vim /etc/php-fpm.d/www.conf

    php_value session.save_handler “redis” \保存session的方式
    php_value session.save_path “tcp://192.168.189.173:6379” \redis服务器的地址和端口
  3. 重启php-fpm

    systemctl restart php-fpm


Reids 口令认证
给redis设置连接密码
vim /etc/redis.conf
requirepass 123 \指定密码为123

重启redis:
kill -15 $(cat /var/run/redis_6379.pid)
redis-server /etc/redis.conf

Redis 主从复制
只需要在从节点配置即可,配置如下
286行:
replicaof 192.168.189.173 6379 \master的ip和端口
masterauth 123 \可选参数,master的连接密码,若没有可以不写

临时主从复制:
进入到redis-cli中执行
slaveof host(主的IP) port(主的端口)

注意,一旦redis成为从节点,将会变成只读的,不可写入数据


Redis 哨兵集群模式

cp /root/redis-5.0.3/sentinel.conf /etc

vim /etc/sentinel.conf

bind 0.0.0.0 \取消注释 改为监听所有ip
protected-mode no \取消注释 关闭保护模式
port 26379 \监听端口
daemonize yes \以守护进程的方式运行
logfile “/tmp/sentinel.log” \日志的目录
sentinel monitor mymaster 192.168.79.22 6379 2 \指定master的ip地址 端口 客观下线的票数

将修改好的配置文件发送到两台从的机器上面:
scp /etc/sentinel.conf root@192.168.79.33:/etc/
scp /etc/sentinel.conf root@192.168.79.44:/etc/

在每台主机上启动redis哨兵:

redis-sentinel /etc/sentinel.conf

查询一下日志,可以看到他们已经在互相监控

tail -f /tmp/sentinel.log

测试:
停掉 redis master 然后查看日志,哨兵是否有动作,是否选取出新的master
然后登录到被选取的master上验证一下是否已经升级为master拥有一个slave

redis-cli

info \查看状态 验证


Redis Cluster分布式集群

Redis 常见故障
雪崩:
雪崩就是指缓存中大批量热点数据过期后系统涌入大量查询请求,
因为大部分数据在Redis层已经失效,请求渗透到数据库层,大
批量请求犹如洪水一般涌入,引起数据库压力造成查询堵塞甚至宕机。
解决办法:
我们的redis是高可用的,通过主从+哨兵,redis cluster,这样一来,我们的一个redis崩盘了,我们还有我们的redis集群。
redis持久化,我们的redis一旦重启,会自动从磁盘上加载数据,恢复我们缓存的数据

  击穿:
  		缓存击穿,就是说某个 key 非常热点,访问非常频繁,处于集中式高并
  		发访问的情况,当这个 key 在失效的瞬间,大量的请求就击穿了缓存,
  		直接请求数据库,就像是在一道屏障上凿开了一个洞。
  解决方法:
  		    可以将热点数据设置为永远不过期;或者基于 redis or zookeeper 实现互斥锁,等待第一个请求构建完缓存之后,再释放锁,
  		    进而其它请求才能通过该 key 访问数据。

  穿透:
  		遭受恶意攻击,故意去寻找没有的键值,这样就会直接访问到后端的DB中,这样就会给DB很大的压力,容易造成DB的宕机
  解决方法:
  		   它查询数据库没有查到,那我们就放一个空值到缓存中,然后设置一个过期时间,那它接下来的操作,肯定就需要和缓存打交道了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值