一、Redis介绍

1、redis是key-value的存储系统,属于非关系型数据库

2、特点:支持数据持久化,可以让数据在内存中保存到磁盘里(memcached:数据存在内存里,如果服务重启,数据会丢失)

3、支持5种数据类型:string,hash,list,set,zset

4、两种文件格式(即数据持久化)

(1)RDB(全量数据):多长时间/频率,把内存中的数据刷到磁盘中,便于下次读取文件时进行加载

(2)AOF(增量请求):类似mysql的二进制日志,不停地把对数据库的更改语句记录到日志中,下次重启服务,会根据二进制日志把数据重写一次,加载到内存里,实现数据持久化

5、存储

(1)内存存储 (2)磁盘存储(RDB)  (3)log文件(AOF)

二、Redis安装

1、下载 redis-2.8.21.tar.gz

2、解压:  tar zxvf redis-2.8.21.tar.gz

3、cd redis-2.8.21

4、编译:make

5、安装: make PREFIX=/usr/local/redis install

6、创建配置文件所在的目录:mkdir /usr/local/redis/etc

7、网上下载配置文件 redis.conf,放到 6 创建的目录下

8、创建启动脚本 /etc/init.d/redis

9、添加redis用户:useradd -s /sbin/nologin redis

10、创建var目录,放置redis 的pid,rdb文件:  mkdir /usr/local/redis/var

11、修改var目录和配置文件权限

(1)chmod 777 /usr/local/redis/var

(2)chmod 755 /etc/init.d/redis

12、启动redis:  service redis start

13、ps aux | grep redis      ——》 监听6379端口

三、php应用redis

前提:已经搭建了LAMP网站架构

php不能直接连redis,需要redis模块的支持(redis是和开发语言结合使用的)

1、Redis扩展模块安装
(1)下载 phpredis.zip
(2)解压:unzip phpredis.zip
(3)cd phpredis-develop/
(4)/usr/local/php/bin/phpize   ——》生成 configure文件
(5)编译redis.so的模块
./configure --with-php-config=/usr/local/php/bin/php-config
(6)make && make install
(7)检查是否有redis.so文件
ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/
——》 redis.so
(8)编辑php.ini配置文件
最后1行加上
extension=redis.so
(9)php检查是否加载了redis.so模块
/usr/local/php/bin/php -m |grep redis
——》redis
 
 
 
2、Redis 实现session共享
(1)apache测试目录下创建info.php ——》 调用 phpinfo() 函数
(2)apache虚拟主机配置文件(extra目录下)或者主配置文件httpd.conf 中定义
session存储的处理方式和存储路径
(a)php_value session.save_handler "redis"
(b)php_value session.save_path "tcp://127.0.0.1:6379"
 
ps: 还有另外两种方法
1、php的全局配置文件php.ini添加上面2行
2、如果是lnmp架构

php-fpm.conf对应的pool中加入 
php_value[session.save_handler] = redis
php_value[session.save_path] = "tcp://127.0.0.1:6379"
 
 
(3)重启apachectl
/usr/local/apache2/bin/apachectl restart
(4)浏览器访问:192.168.131.110/info.php

说明配置已经生效

3、Redis 存储session 测试

(1)进入apache的htdoc下

(2)创建session.php

 <?php
session_start();
if (!isset($_SESSION['TEST'])) {
$_SESSION['TEST'] = time();
}
$_SESSION['TEST3'] = time();
print $_SESSION['TEST'];
print "<br><br>";
print $_SESSION['TEST3'];
print "<br><br>";
print session_id();
?>

(3)测试  ——》 记得去掉redis配置文件中的密码设置,否则会返回500授权错误

(a)curl localhost/session.php

(b)redis-cli  ——》 在家目录的.bashrc加入了redis启动目录

说明session已经存入到redis里了

四、redis的一些题外话

redis一些重点

1、主从

2、持久化

3、哨兵实现主从切换

4、sentinel原理 (2.8.0之后有这个功能 sentinel.conf)

5、数据类型: hash,string 用得多

着重讲下哨兵

1、支持redis协议

2、原理简单描述

所有服务器都部署哨兵,哨兵去监控主从,要是redis或者哨兵死了,另外所有的机器会重新投票(就是下图6379后面的数字,比如2),投死那台挂掉的机器(2台机器投票确认机器死了),再在另外所有的机器上自成一个体系,重新生成主

3、重点

(1)哨兵的配置文件也就是sentinel.conf是时时发生变化的

当主被投票死掉后,从起来于是产生一个新的主ip,新主会变成配置文件master的ip

(2)redis的配置文件也会改变

(3)当已死的主恢复后,就变成了从

(4)哨兵一定要是单数,否则选举易出现问题,偶数可能会同票

4、几个问题

(1)什么时候用redis?

所有的web第一次请求,先从db上取,取到的结果再返回给客户端的同时也写到redis去,
当再次用到这个结果时就从redis取,不需要再从db上取(很慢)
 
(2)什么时候用redis高可用,也就是哨兵?
所有的研发程序需要连主(可写),从(只读)是写不进去东西的
主redis有一个vip或者直连它的物理ip,研发程序直连redis写东西时,
redis主挂了,哨兵就起到作用
 
redis取不到数据,就从db上取——》程序做的,自动的降级
如果程序没有做降级,redis主挂了,线上所有涉及到在redis写的业务都用不了 ——》 所以就要用哨兵
 

Redis安装及实现session共享的更多相关文章

  1. nginx+tomcat+redis的集群+session共享

    nginx+tomcat+redis的集群+session共享 环境准备 1.tomcat版本:tomcat7 tomcat下载及安装,目前很多好的资源和步骤,此处省略. 2.jdk版本:jdk1.7 ...

  2. net core+Redis+IIS+nginx实现Session共享

    .Net Core Web Api实践(二).net core+Redis+IIS+nginx实现Session共享   前言:虽说公司app后端使用的是.net core+Redis+docker+ ...

  3. nginx+tomcat+redis负载均衡及session共享

    概述 本文档是用来详细描述 nginx+tomcat+redis负载均衡实现session共享 所需软件及下载地址 软件名称 下载地址 功能说明 Nginx-v1.6.0 http://nginx.o ...

  4. Spring Boot(十一)Redis集成从Docker安装到分布式Session共享

    一.简介 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API,Redis也是技术领域使用最为广泛的存储中间件,它是 ...

  5. .Net Core Web Api实践(二).net core+Redis+IIS+nginx实现Session共享

    前言:虽说公司app后端使用的是.net core+Redis+docker+k8s部署的,但是微信公众号后端使用的是IIS部署的,虽说公众号并发量不大,但领导还是使用了负载均衡,所以在介绍docke ...

  6. spring+redis+nginx 实现分布式session共享

    1,spring 必须是4.3以上版本的 2,maven配置 添加两个重要的依赖 <dependency> <groupId>org.springframework.sessi ...

  7. Nginx+Tomat8负载后,利用Redis实现Tomcat8的session共享

    网上相应的文章应该都介绍,这里只特别记录下笔者在实操的过程出现的问题.此文件只针对tomcat 8 版本,之前版本可略过. tomcat 8 中的context.xml文件修改,增加以下配置. Jav ...

  8. redis + Tomcat 8 的session共享解决

    如果英文不错的看,建议直接看官网吧,官网写的挺清楚.下面的内容是转载的一篇文章,自己补充了一些,供大家参考,也欢迎大家一起讨论 官方截止到2015-10-12前是不支持Tomcat8的,详情见官网:h ...

  9. 基于Redis缓存的Session共享(附源码)

    基于Redis缓存的Session共享(附源码) 在上一篇文章中我们研究了Redis的安装及一些基本的缓存操作,今天我们就利用Redis缓存实现一个Session共享,基于.NET平台的Seesion ...

随机推荐

  1. 用libcurl 登录网站

    libcurl 可以发送和接收HTTP消息,因此可以发送用户名.密码和验证码来登录网站,网上有不少这方面的内容,但不甚完整,我摸索了两天,将其中要点记录下来. 基本步骤 正常访问登录页面,访问时,设置 ...

  2. 敏捷组织中PMO应遵循的准则

    敏捷改变了人们的工作方式,不仅仅是开发部门,而且还包括其它的部门,例如HR.财务以及PMO等.在大多数组织中,PMO是一个控制体.它指导项目团队的规范.模板以及流程.目前,大多数的IT组织都敏捷化了. ...

  3. <Script>放置位置

    html文件是自上而下的执行方式 css引入执行加载时,程序仍然往下执行 script脚本是则中断线程,待该script脚本执行结束之后程序才继续往下执行 页面效果实现类的js放在body之前,动作, ...

  4. JAVA中保留小数的多种方法

    // 方式一:double f = 3.1516;BigDecimal b = new BigDecimal(f);double f1 = b.setScale(2, BigDecimal.ROUND ...

  5. SQL Server 2008 允许远程连接的配置

    如果无法通过IP地址远程连接你的SQL Server 2008服务器,可以参考下面的内容进行设置.在进行下述设置之前,应该确保你的网络已经安装设置完毕,服务器已经正常连接到网络中. 1.单击Windo ...

  6. 创建Mat对象的几种方法

    1.Mat的构造函数 Mat M(行数,列数,数据类型,通道数) eg:M(2,2, CV_8UC3, Scalar(0,0,255)). 2.利用Mat的Create()函数.Mat M; M.cr ...

  7. sublime 安装插件GitGutter报错,git binary cannot be found等等

    今天给sublime text安装插件GitGutter的时候,居然报错了,网上查找了下解决方法,在此记录下.因为本博主的电脑是windows的,所以这里只能提供windows的方法啦. 解决方法很简 ...

  8. select、poll、epoll之间的区别总结[整理]

    select,poll,epoll都是IO多路复用的机制.I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作.但select ...

  9. 解决Myeclipse PermGen space问题

    myeclipse配置web服务器配置 Window—Preferences—Myeclipse—Servers—tomcat JDK的Optional Java VM arguments配置为:-X ...

  10. c#生成二维码

            String link ="www.baidu.com";//这里一般是一个链接 封装后的方法,直接调用就可以了  public void CreateQRCode ...