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

    1、Redis功能介绍

    高速读写
    数据类型丰富 (笔试、面试)*****
    支持持久化 (笔试、面试)*****
    多种内存分配及回收策略
    支持事务 (面试) ****
    消息队列、消息订阅
    支持高可用 ****
    支持分布式分片集群 (面试) *****
    缓存穿透雪崩(笔试、面试) *****
    Redis API **

    2、企业缓存产品介绍

    Memcached:

    优点:高性能读写、单一数据类型、支持客户端式分布式集群、一致性hash
    多核结构、多线程读写性能高。
    缺点:无持久化、节点故障可能出现缓存穿透、分布式需要客户端实现、跨机房数据同步困难、架构扩容复杂度

    Redis:

    优点:高性能读写、多数据类型支持、数据持久化、高可用架构、支持自定义虚拟内存、支持分布式分片集群、单线程读写性能极高
    缺点:多线程读写较Memcached慢
    新浪、京东、直播类平台、网页游戏
    memcache与redis在读写性能的对比

    memcached 适合,多用户访问,每个用户少量的rw
    redis 适合,少用户访问,每个用户大量rw

    Tair:

    优点:高性能读写、支持三种存储引擎(ddb、rdb、ldb)、支持高可用、支持分布式分片集群、支撑了几乎所有淘宝业务的缓存。
    缺点:单机情况下,读写性能较其他两种产品较慢

    3、Redis使用场景介绍

    Memcached:多核的缓存服务,更加适合于多用户并发访问次数较少的应用场景

    Redis:单核的缓存服务,单节点情况下,更加适合于少量用户,多次访问的应用场景。

    Redis一般是单机多实例架构,配合redis集群出现。

    -----------------------------------------------------------------------

    4、Redis安装部署:

    下载:
    wget http://download.redis.io/releases/redis-3.2.12.tar.gz
    解压:
    上传至 /data
    tar xzf redis-3.2.12.tar.gz
    mv redis-3.2.12 redis
    安装:
    cd redis
    make
    启动:
    src/redis-server &


    环境变量:
    vim /etc/profile
    export PATH=/data/redis/src:$PATH
    source /etc/profile


    redis-server &

    redis-cli
    127.0.0.1:6379> set num 10
    OK
    127.0.0.1:6379> get num
    10

    5、Redis基本管理操作

    5.1基础配置文件介绍:

    [root@standby ~]# redis-cli shutdown

    mkdir /data/6379

    cat >>/data/6379/redis.conf <<EOF
    daemonize yes
    port 6379
    logfile /data/6379/redis.log
    dir /data/6379
    dbfilename dump.rdb
    EOF


    重启redis
    redis-cli shutdown
    redis-server /data/6379/redis.conf
    netstat -lnp|grep 63


    +++++++++++配置文件说明++++++++++++++
    redis.conf
    是否后台运行:
    daemonize yes
    默认端口:
    port 6379
    日志文件位置
    logfile /var/log/redis.log
    持久化文件存储位置
    dir /data/6379
    RDB持久化数据文件:
    dbfilename dump.rdb
    +++++++++++++++++++++++++

    redis-cli
    127.0.0.1:6379> set name zhangsan
    OK
    127.0.0.1:6379> get name
    "zhangsan"


    redis-cli 客户端命令常用参数说明

    redis-cli 刚装完,可以在redis服务器上直接登录redis
    -p 6379 指定端口号
    -h 指定链接地址
    -a 指定链接密码
    redis-cli set num 10 ,无交互执行redis命令
    cat /tmp/1.txt |redis-cli

    [root@db01 ~]# redis-cli -h 10.0.0.51 -p 6379
    10.0.0.51:6379>

    -------------------------

    5.2 redis安全配置

    redis默认开启了保护模式,只允许本地回环地址登录并访问数据库。

    禁止protected-mode

    protected-mode yes/no (保护模式,是否只允许本地访问)
    ----------------------

    (1)Bind :指定IP进行监听
    echo "bind 10.0.0.200 127.0.0.1" >>/data/6379/redis.conf
    (2)增加requirepass {password}
    echo "requirepass 123" >>/data/6379/redis.conf

    重启redis
    redis-cli shutdown
    redis-server /data/6379/redis.conf

    ----------验证-----
    方法一:
    [root@db03 ~]# redis-cli -a 123
    127.0.0.1:6379> set name zhangsan
    OK
    127.0.0.1:6379> exit
    方法二:
    [root@db03 ~]# redis-cli
    127.0.0.1:6379> auth 123
    OK
    127.0.0.1:6379> set a b

    5.3 在线查看和修改配置

    CONFIG GET *
    CONFIG GET requirepass
    CONFIG SET requirepass 123

    5.4 redis持久化(内存数据保存到磁盘)

    作用:可以有效防止,在redis宕机后,缓存失效的问题.

    RDB
    AOF

    RDB 持久化
    可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。
    优点:速度快,适合于用做备份,主从复制也是基于RDB持久化功能实现的。
    缺点:会有数据丢失

    rdb持久化核心配置参数:

    vim /data/6379/redis.conf
    dir /data/6379
    dbfilename dump.rdb

    save 900 1
    save 300 10
    save 60 10000

    配置分别表示:
    900秒(15分钟)内有1个更改
    300秒(5分钟)内有10个更改
    60秒内有10000个更改
    ----------
    AOF 持久化(append-only log file)
    记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。
    AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。
    优点:可以最大程度保证数据不丢
    缺点:日志记录量级比较大
    -------------

    AOF持久化配置
    appendonly yes
    appendfsync everysec

    appendfsync always
    appendfsync no

    是否打开aof日志功能
    每1个命令,都立即同步到aof
    每秒写1次
    写入工作交给操作系统,由操作系统判断缓冲区大小,统一写入到aof.

    vim /data/6379/redis.conf
    appendonly yes
    appendfsync everysec

    面试:
    redis 持久化方式有哪些?有什么区别?
    rdb:基于快照的持久化,速度更快,一般用作备份,主从复制也是依赖于rdb持久化功能
    aof:以追加的方式记录redis操作日志的文件。可以最大程度的保证redis数据安全,类似于mysql的binlog

  • 相关阅读:
    volatile
    public && protected && private
    class && struct
    jQuery-实现全选与反选
    .NET Fframework
    C# 中的单精度与双精度区别
    C#中的集合(HashTable与Array类)
    c#中的数组、ArrayList、List区别
    C#属性和字段区别、get与set用法
    C#中委托和事件
  • 原文地址:https://www.cnblogs.com/zhaijihai/p/10283968.html
Copyright © 2011-2022 走看看