zoukankan      html  css  js  c++  java
  • Session服务器之Memcached与Redis

    安装Memcached
    [root@nginx ~]# yum -y install libevent memcached
    指定用户大小等信息,工作环境中常指定大小一般为4到8G,此信息测试使用。
    [root@nginx ~]# memcached -u root -m 120M -n 10 -f 2 -d -vvv -c 120
     
    一些选项意思:
    -h  #查看帮助信息
    -p  #指定memcached监听的端口号,默认11211
    -l   #memcached程序运行时使用的用户身份必须是root用户
    -m #指定使用本机的多少物理内存存取数据默认64M
    -c   #memcached服务的最大连接数
    -vvv #显示详细信息
    -n  #chunk size的最小空间是多少单位字节
    -f   #chunk size大小增长的倍数默认1.25倍
    -d  #在后台启动、
     
    安装一个telnet软件来进行测试memcached的存取是否正常
    [root@nginx ~]# yum -y install telnet

    [root@nginx ~]# telnet 192.168.200.111 11211
    Trying 192.168.200.111...
    <30 new auto-negotiating client connection
    Connected to 192.168.200.111.
    Escape character is '^]'.
    set username 0 0 8
    zhangsan
    get username
    ...
    >30 END
    VALUE username 0 8
    zhangsan
    END
    quit
    读取了测试存储的名字,说明memcached的工作状态应该是正常的
    然后创建一个session的文件夹,进入其中把对应的jar包放进去,与tomcat版本有关
    然后把session包中的*.jar复制到tomcat安装目录下的lib下
    cp session/*.jar /usr/local/tomcat/lib/
    然后编辑tomcat配置文件,使tomcat可以连接memcached服务器
     vim /usr/local/tomcat/conf/context.xml 自己安装目录下的conf下的context.xml文件
    在Context标签中添加一些内容   其中的IP改为自己的Memcached服务器的IP和端口
    <Context>
    <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
    memcachedNodes="memA:192.168.36.129:11211 memB:192.168.36.170:11211"
    requestUrilgnorePattern=".*(ico|png|gif|jpg|css|js)$"
    transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
    />
    </Context>
    然后重启tomcat服务,然后测试访问。如果刷新Tomcat服务器出现变化,sessionID不发生变化就成功了
    Session服务器之Redis
    Redis与Memcached的区别
    *内存利用率:使用简单的key-value(键值对)存储的话,Memcached的内存利用率更高,而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached。
    * 性能对比:由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis,虽然Redis最近也在存储大数据的性能上进行优化,但是比起Memcached,还是稍有逊色。
    * Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用
    * Redis支持数据的备份,即master-slave模式的数据备份。
    * Redis不仅仅支持简单的key-Value类型的数据,同时还提供list,set,zset,hash等数据结构的存储
    安装部署redis
    [root@node1 ~]# tar xf redis-3.2.5.tar.gz -C /usr/src/
    [root@node1 ~]# cd /usr/src/redis-3.2.5/
    [root@node1 redis-3.2.5]# make
    //这里如果报错:tclsh8.5: not found 发现少了tcl 报错,则安装tcl
    wget http://downloads.sourceforge.net/tcl/tcl8.5.9-src.tar.gz
    cd /tcl8.5.9-src/unix
    ./configure
    make && make install//
    接着make就没报错了
    [root@node1 redis-3.2.5]# mkdir -p /usr/local/redis/{bin,etc,var}
    [root@node1 redis-3.2.5]# cd src/
    src目录下这些文件作用如下
    * redis-server:Redis服务器的daemon启动程序
    * redis-cli:Redis命令行操作工具.你也可以用telnet根据其纯文本协议来操作
    * redis-benchmark:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能
    * redis-stat:Redis状态检测工具,可以检测Redis当前状态参数及延迟状况
    [root@node1 src]# cp redis-benchmark  redis-check-aof redis-cli redis-server  /usr/local/redis/bin/
    [root@node1 redis-3.2.5]# cp ../redis.conf  /usr/local/redis/etc
    [root@node1 redis-3.2.5]# vim /usr/local/redis/etc/redis.conf //修改配置文件
    daemonize no  改为 daemonize yes  //是否把redis-server启动在后台,默认是“否”。若改成yes,会生成一个pid文件
    bind 127.0.0.1  改为 bind 0.0.0.0   //任意主机都可访问
    其他的看需要修改
    关闭redis:
    [root@node1 redis-3.2.5]# killall -9 redis-server
    启动redis:
    [root@node1 redis-3.2.5]# /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
    查看是否启动:
    [root@node1 redis-3.2.5]# netstat -anpt |grep redis
    tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      77526/redis-server 
    监控redis共享session:
    [root@node1 redis-3.2.5]# /usr/local/redis/bin/redis-cli -p 6379  monitor
    1555299973.187326 [0 192.168.200.113:44980] "EXPIRE" "29C6E0F087C504F4C90BBEAE924F20DD" "1800"
    ......
    将tomcat需要调用redis的jar包放入tomcat/lib
    [root@node1 redis-3.2.5]# cp tomcat-redis-session-manage-tomcat7.jar tomcat-juli.jar commons-logging-1.1.3.jar commons-pool2-2.2.jar jedis-2.5.2.jar /usr/local/tomcat/lib
    修改context.xml文件以支持调用redis
    [root@node1 redis-3.2.5]# vim /usr/local/tomcat/conf/context.xml
    在Context段中加入以下内容
    <Context>
    <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
      <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" 
    host="192.168.200.112"   //redis的IP地址
    port="6379"      //redis的端口
    database="0" 
    maxInactiveInterval="60" />
    </Context>
    重启tomcat服务
    [root@node1 ~]# /usr/local/tomcat/bin/shutdown.sh
    [root@node1 ~]# /usr/local/tomcat/bin/startup.sh
     
  • 相关阅读:
    多项式学习笔记(二) NTT
    矩阵树定理学习笔记
    拓展BSGS 学习笔记
    P2257 YY的GCD
    P1891 疯狂的lcm
    友链
    关于我
    焚燃指间の回忆
    洛谷P4180
    洛谷P2292
  • 原文地址:https://www.cnblogs.com/chenxi123/p/11627198.html
Copyright © 2011-2022 走看看