zoukankan      html  css  js  c++  java
  • Redis和memcached缓存技术

    缓存的定义:缓存就是在内存中存储的数据备份,当数据没有发生本质变化的时候,我们避免数据的查询操作直接连接数据库,而是去    内容中读取数据,这样就大大降低了数据库的读写次数,而且从内存中读数据的速度要比从数据库查询要快很多。

    1、Memcached

    协议简单、基于libevent的事件处理、内置内存存储方式、memcached不互相通信的分布式。 各个memcached不会互相通信以共享信息,分布策略由客户端实现。不会对数据进行持久化,重启memcached、重启操作系统会导致全部数据消失。

    Memcached常见的应用场景是存储一些读取频繁但更新较少的数据,如静态网页、系统配置及规则数据、活跃用户的基本数据和个性化定制数据、准实时统计信息等。
    2、Redis

    edis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string、list、set、zset(有序集合)和hash。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序和算法。

    与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件(RDB和AOF两种方式),并且在此基础上实现了master-slave(主从)同步,机器重启后能通过持久化数据自动重建内存,使用Redis作为Cache时机器宕机后热点数据不会丢失。

    Redis丰富的数据结构也使其拥有更加丰富的应用场景。Redis的命令都是原子性的,可以简单地利用INCR和DECR实现计数功能。使用list可以实现获取最近N个数的操作。sort set支持对数据排序,可以应用在排行榜中。set集合可以应用到数据排重。Redis还支持过期时间设置,可以应用到需要设定精确过期时间的应用。只要可以使用Redis支持的数据结构表示的场景,就可以使用Redis进行存储。

        1)Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
        2)Redis支持master-slave(主-从)模式应用
        3)Redis支持数据持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
        4)Redis单个value的最大限制是1GB,memcached只能保存1MB的数据。

    Redis的简单安装

    1.获取redis资源

      wget http://download.redis.io/releases/redis-4.0.8.tar.gz

    2.解压

      tar xzvf redis-4.0.8.tar.gz

    3.安装

      cd redis-4.0.8

      make

      cd src

      make install PREFIX=/usr/local/redis

    4.移动配置文件到安装目录下

      cd ../

      mkdir /usr/local/redis/etc

      mv redis.conf /usr/local/redis/etc

     5.配置redis为后台启动

      vi /usr/local/redis/etc/redis.conf //将daemonize no 改成daemonize yes

    6.将redis加入到开机启动

      vi /etc/rc.local //在里面添加内容:/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf (意思就是开机调用这段开启redis的命令)

    7.开启redis

      /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf 

    常用命令  

      Redis-server /usr/local/redis/etc/redis.conf //启动redis

      rm -rf /usr/local/redis //删除安装目录

      rm -rf /usr/bin/redis-* //删除所有redis相关命令脚本

      rm -rf /root/download/redis-4.0.4 //删除redis解压文件夹

           Redis-server /usr..../redis.conf 启动redis服务,并指定配置文件

           Redis-cli 启动redis 客户端

           Pkill redis-server 关闭redis服务

           Redis-cli shutdown 关闭redis客户端

           Netstat -tunpl|grep 6379 查看redis 默认端口号6379占用情况

    memcached 安装

          1。安装前的准备
      要安装memcached,需要有libevent的支持。
      centos通过
      yum install libevent-devel
      安装即可
      其它版本可通过安装libevent的源文件获得
      2。下载安装 目前最新版本为 memcached-1.2.6.tar.gz
      cd /usr/src
      wget http://www.danga.com/memcached/dist/memcached-1.2.6.tar.gz
      tar xzf memcached-1.2.6.tar.gz
      cd memcached-1.2.6
      ./configure --prefix=/usr/local/memcached
      make
      make install
      3。启动
      /usr/local/memcached/bin/memcached -d -m 512 -l 127.0.0.1 -p 11211 -u root
      表示已守护进程的方式启动,监听于 127.0.0.1 的11211端口,使用root用户,最大使用512M内存
      可以同时开多个memcached,但要监听在不同的端口.
      说明:如果没有带 -u root 的话就会报:
      can't run as root without the -u switch

    开机启动方法

    一、

    通常:启动Memcache的服务器端的命令为:
    # /usr/local/bin/memcached -d -m 10 -u root -l 127.0.0.1 -p 11211 -c 256 -P /tmp/memcached.pid

    -d选项是启动一个守护进程,
    -m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,
    -u是运行Memcache的用户,我这里是root,
    -l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址127.0.0.1,
    -p是设置Memcache监听的端口,我这里设置了11211,最好是1024以上的端口,
    -c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
    -P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,

    想开机自动启动的话,只需在/etc/rc.d/rc.local中加入一行,上面命令
    有人用以下命令:
    /usr/local/memcached/bin/memcached -d -m 20 -p 11211 -u apache
    上面有些东西可以参考一下:即,ip不指定时,默认是本机,用户,最好选择是:apache 或 deamon
    这样,也就是属于哪个用户的服务,由哪个用户启动。

    二、

    脚本方式

    复制代码
    #!/bin/sh
    #
    # memcached:    MemCached Daemon
    #
    # chkconfig:    - 90 25
    # description:  MemCached Daemon
    #
    # Source function library.
    . /etc/rc.d/init.d/functions
    . /etc/sysconfig/network
    #[ ${NETWORKING} = "no" ] && exit 0
    #[ -r /etc/sysconfig/dund ] || exit 0
    #. /etc/sysconfig/dund
    #[ -z "$DUNDARGS" ] && exit 0
    start()
    {
            echo -n $"Starting memcached: "
            daemon $MEMCACHED -u daemon -d -m 1024 -l 127.0.0.1 -p 11211
            echo
    }
    stop()
    {
            echo -n $"Shutting down memcached: "
            killproc memcached
            echo
    }
    MEMCACHED="/usr/local/memcached/bin/memcached"
    [ -f $MEMCACHED ] || exit 1
    # See how we were called.
    case "$1" in
      start)
            start
            ;;
      stop)
            stop
            ;;
      restart)
            stop
            sleep 3
            start
            ;;
        *)
            echo $"Usage: $0 {start|stop|restart}"
            exit 1
    esac
    exit 0
    复制代码
    复制代码
    #!/bin/sh
    #
    # memcached:    MemCached Daemon
    #
    # chkconfig:    - 90 25 
    # description:  MemCached Daemon
    #
    # Source function library.
    . /etc/rc.d/init.d/functions
    . /etc/sysconfig/network
     
    start() 
    {
            echo -n $"Starting memcached: "
            daemon /usr/local/bin/memcached -u daemon -d -m 4096 -l 10.10.10.220 -p 58728
            echo
    }
     
    stop() 
    {
            echo -n $"Shutting down memcached: "
            killproc memcached 
            echo
    }
     
    [ -f /usr/local/bin/memcached ] || exit 0
     
    # See how we were called.
    case "$1" in
      start)
            start
            ;;
      stop)
            stop
            ;;
      restart|reload)
            stop
            start
            ;;
      condrestart)
            stop
            start
            ;;
      *)
            echo $"Usage: $0 {start|stop|restart|reload|condrestart}"
            exit 1
    esac
    exit 0
    复制代码

    [root@crm ~]# chkconfig  --add memcached 
    [root@crm ~]# chkconfig  --level 235  memcached  on
    [root@crm ~]# chkconfig  --list | grep mem
    memcached       0:off   1:off   2:on   3:on    4:off   5:on   6:off

    接下来,可以用以下命令启动与停止 memcached

    /etc/rc.d/init.d/memcached  start  
    /etc/rc.d/init.d/memcached  stop
    /etc/rc.d/init.d/memcached  restart

    部分来源转自网络,参考文献:https://blog.csdn.net/greensomnuss/article/details/81084423      https://www.cnblogs.com/limit1/p/9045183.html    https://www.cnblogs.com/happig/p/3631530.html

  • 相关阅读:
    jsp输出当前时间
    java连接操作Oracle
    Oracle 内置函数
    伪表和伪列
    关于listview视图的 作业
    5月21日 课堂总结
    网格布局作业
    网格布局视图整理
    5月19日课堂总结
    拷贝程序
  • 原文地址:https://www.cnblogs.com/kjlysx/p/10277284.html
Copyright © 2011-2022 走看看