redis之前也用了一段时间,作用大概也类似于:
一:redis作用
1:用户数据缓存,每次http访问与响应,都会产生数据,而这些数据,是否都会走向数据库存表?
不妨来一段实例:电商网购平台,首页每日PV 五千万左右,前端产生日志量每日大于400M,是否能够给登录用户账号、个人中心,订单都存表?
那即使优化tcp-connects、tomcatThreadpools、oracle-connects,分分钟崩盘数据库,即使是RAC4节点数据库。
project:使用redis缓存,这是一种web服务器与数据库之前的缓冲区,用以存储用户数据(后端seesion not 前端cookie),能够减少数据库压力,便于快速返回用户查询数据。
2:做web集群中seesion共享,如若N个tomcat做集群,比如说nginx反向代理到前端做login,当http被load balancer/ Director调度到3th tomcat,可以,但是这个tomcat宕机了,
那其余正常的tomcat是否能返回正确的server ?seesion能都转移到2th tomcat,redis,那前期部署tomcat集群时候,得引用redis关于seesion共享
----------------------
project:这里是redis缓存tomcat的配置,在tomcat/conf/context.xml
host="172.18.11.162" #这是redis服务器的ip地址 port="6379" #这里是redis的端口 database="0" maxInactiveInterval="1800" /> 二:开始一段redis单实例部署,最重要的是基于php做web管理,其实亦可以使用桌面管理工具redis manager desktop,比如运维管理平台,需要集成所有管理界面。 1、下载redis2.8 redis-2.8.6.tar.gz 2、编译安装,不通过configure make make install 完成安装过程中提示 it's good idea to run ‘make test’ INSTALL install INSTALL install INSTALL install INSTALL install make test ---报错 You need tcl 8.5 or newer in order to run the Redis test 安装 yum -y install tcl OK 3、mkdir -p /opt/redis/bin mkdir -p /opt/redis/etc mkdir -p /opt/redis/data mkdir -p /opt/redis/log cp /opt/redis-2.8.6/redis.conf /opt/redis/etc cd /opt/redis-2.8.6/src cp mkreleasdhdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server /opt/redis/bin 修改/opt/redis.conf ----必要修改daemonize,其余可不做修改,自行记住即可 daemonize yes 制定redis后台运行 logfile /opt/redis/log/redis.log dir /opt/redis/data/ 4、启动redis ./redis-server ../etc/redis.conf [root@app redis]# netstat -lntp|grep redis tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 28569/./redis-serve tcp 0 0 :::6379 :::* LISTEN 28569/./redis-serve 可以看到6379端口已启用,并且服务为redis [root@app bin]# redis-cli 127.0.0.1:6379> redis客户端启动。 之后可以使用redis管理工具 RedisDesktopManager 来实现redis缓存的key操作 redis命令 ---------查找key值存在-------- 127.0.0.1:6379> exists Fm_LogList/192767813 (integer) 1 (6.20s) ---------查看所有的key-------- 127.0.0.1:6379> keys 1) "Fm_LogList/192767813" 2) "Fm_LogList/172756561" 3) "Fm_LogList/194292175" 4) "Fm_LogList/191353234" 5) "Fm_LogList/173947365" 6) "Fm_LogList/165289481" 。 。 。 --------------------- expire 设置过期时间 expire key time 127.0.0.1:6379> EXPIRE tutorialname 60 1) (integer) 1 192.168.182.6:0>expire chen 600 1 ------------------------------------------ ttl key 查看键的过期时间 127.0.0.1:6379> ttl Fm_80/UserJinbiLogList/194361483 (integer) -1 -1, 如果key没有到期超时 ----------del name 删除key name----- 127.0.0.1:6379> del Fm_80/UserJinbiLogList/162896690 (integer) 1 -------------新建一个key,删除一个key----- 127.0.0.1:6379> set job "andrio" OK 127.0.0.1:6379> EXISTS job (integer) 1 ----------ping PONG返回响应是否连接成功--- 127.0.0.1:6379> ping PONG ----------select 0~15 编号的数据库--------- 127.0.0.1:6379[1]> select 15 OK --------------慎用,以至于不用!!!----------------------. flushdb 删除当前选择数据库中的所有key flushall 删除所有数据库中的数据库 ------------ select 0 选择到0数据库 redis默认的数据库是0~15一共16个数据库 move confirm 1 将当前数据库中的key移动到其他的数据库中,这里就是把confire这个key从当前数据库中移动到1中 rename key2 key3 重命名key2 为key3 type key2 返回key的数据类型 move confirm 1 将当前数据库中的key移动到其他的数据库中,这里就是把confire这个key从当前数据库中移动到1中 expire confirm 100 设置confirm这个key100秒过期 ------------------查看有多少个key----------------------------- 127.0.0.1:6379> DBSIZE (integer) 1415502 webphp静态文件,需要部署php PHP搭建: 1、可以分为yum安装与源码安装,但是源码安装存在各种依赖包问题 #安装php依赖软件 yum -y install autoconf automake bzip2-devel freetype-devel gcc-c++ libcurl-devel libgcrypt-devel \ libicu-devel libjpeg-turbo-devel libpng-devel libxml2-devel libxslt-devel ncurses-devel openjpeg-devel \ openjpeg-libs openldap-devel openssl-devel pcre-devel readline-devel zlib-devel 这只是其中一部分,请执行yum, 分外,yum -y install php (强制安装php所依赖的包,可以使用) 2、今天使用的php是源码,php-5.3.0.tar.gz,步骤一也要执行,防止依赖包困扰, http://www.cnblogs.com/lufangtao/archive/2012/12/30/2839679.html 3、进入解压包 ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --enable-fpm 其实系统自带http服务,但是涉及php需要依赖http环境,所以我们下载httpd-2.2.31.tar.gz http://www.cnblogs.com/zhuque/archive/2012/11/03/2763352.html apache2安装 ./configure --prefix=/usr/local/apache2 以下make 以下 make install继续 返回php安装 configure之后进入编译安装 make 然后 make install,即可 系统再带的http服务占用80端口,必须取消httpd服务自启动。防止与后装的apache2端口冲突 4、配置文件(满足最基本的配置) 编辑 /usr/local/apache2/conf/httpd.conf 文件 找到AddType application/x-compress .Z AddType application/x-gzip .gz .tgz 在后面添加: AddType application/x-httpd-php .php(使Apcche支持PHP) AddType application/x-httpd-php-source .php5 找到: DirectoryIndex index.html 添加: DirectoryIndex index.html index.php 找到: #ServerName www.example.com:80 修改为: ServerName 127.0.0.1:80或者ServerName localhost:80 记得要去掉前面的“#” 5、访问192.168.182.5 页面显示 it work 表示apache2安装成功,访问的页面来自于 /usr/local/apache2/htdocs/index.html 今天是为了能顺利解决php环境,我把phpredisadmin包放进/usr/local/apache2/htdocs 访问http://192.168.182.5/phpredisadmin/index.php 跳转 http://192.168.182.5/phpredisadmin/?overview 。php页面显示正常(如果没有安装php,即使访问php页面,也是代码页,出不来php页面效果) 太棒了,php服务器搭建成功 重点,6、php服务器搭建成功了,解决redis web管理问题 来源于 -------https://my.oschina.net/u/2416477/blog/486481 经过编辑,生成 phpredisadmin 后面redis可以直接使用!!! 下面验证 redis web管理是否有效 打开 http://192.168.182.5/phpredisadmin/index.php phpRedisAdmin [I] [E] [I] Add another key * Filter! type here to filter Keys (2) ----------------所有的key chen wang --------------------------------look 点击 Add another key 新建叫wang的key,value内容写一串。。。。 刷新,keys确实存在 wang 去服务器 执行 ./redis-cli 启用redis客户端 执行 127.0.0.1:6379> keys * 1) "chen" 2) "wang" 存在叫做wang的key,redis web 可用!!! ###############关于 一:如果说多个redis用于一个项目,可以做redis集群,使用keepalived也可以使用,在php中phpredisadmin配置文件中192.168.182.6改为redis集群VIP即可 二:关于多个项目,完全不在同一业务的redis,怎么破?phpredisadmin给了完整答案 很多源码例如nginx都会提供default.conf用以模板化解决提供,多实例。!!!可以添加,这儿不多说 ---------------完成,乱糟糟的草稿纸,OK