一、什么是Redis?与MemCached的区别
    1、共同点:基于内存的NoSQL
    2、Memcached看成Redis的前身
    3、最大区别:MemCached(准确一点:不能叫数据库)---> 不支持持久化
    4、了解:MemCached 参考讲义
             memcached-1.4.25.tar.gz ----> 官方提供,但不具备复制功能
             memcached-1.2.8-repcached-2.2.tar.gz ---> 日本工程师重写了官方版本,实现集群同步

二、Redis的安装与配置: hadoop111

    1、安装Linux的rpm(Redis是C语言)
        如果之前已经装了HUE,就有了
        rpm -ivh libgomp-4.4.7-11.el6.i686.rpm
        rpm -ivh libstdc++-devel-4.4.7-11.el6.i686.rpm
        rpm -ivh kernel-headers-2.6.32-504.el6.i686.rpm
        rpm -ivh glibc-headers-2.12-1.149.el6.i686.rpm
        rpm -ivh glibc-devel-2.12-1.149.el6.i686.rpm
        rpm -ivh ppl-0.10.2-11.el6.i686.rpm
        rpm -ivh cloog-ppl-0.15.7-1.2.el6.i686.rpm
        rpm -ivh mpfr-2.4.1-6.el6.i686.rpm
        rpm -ivh cpp-4.4.7-11.el6.i686.rpm
        rpm -ivh gcc-4.4.7-11.el6.i686.rpm
        rpm -ivh gcc-c++-4.4.7-11.el6.i686.rpm
        rpm -ivh telnet-0.17-48.el6.i686.rpm(对于Redis不需要,装MemCached才需要,作为MemCached的客户端)    

    2、
        1.解压:tar -zxvf redis-3.0.5.tar.gz
        2.编译:make
        3.安装:make PREFIX=/root/training/redis install
        4.Redis的配置文件:cp ~/tools/redis-3.0.5/redis.conf /root/training/redis/etc/

    3、Redis提供的命令: bin目录
        redis-benchmark         压力测试工具,如:模拟10000个客户端
        redis-check-aof         检查AOF的备份文件
        redis-check-dump(RDB)   检查RDB的备份文件
        redis-cli               Redis客户端
        redis-sentinel          Redis哨兵(实现Redis的HA)----> 监视:Master
        redis-server            Redis服务器
        
    4、配置Redis
            daemonize no: Redis是否以后天启动的方式启动 ---> yes
            port 6379:    端口
    
        (*)单机版
            启动:bin/redis-server conf/redis_6379.conf
            验证:ps -ef|grep redis
        (*)集群
        

三、Redis的基本操作(跳过)----> 参考讲义

    Haoop之高速缓存redis 之十九

Haoop之高速缓存redis 之十九

    Haoop之高速缓存redis 之十九

    (*)启动客户端:  bin/redis-cli
    (*)Java API

    Haoop之高速缓存redis 之十九

Haoop之高速缓存redis 之十九

四、Redis的简单事务和消息机制
    (一)事务:transaction
                Redis事务的本质:将一组操作放入一个队列
                对比Oracle的事务和Redis的事务区别
                
                         Redis                             Oracle
                语句:   操作命令                   DML语句(增删改查)
                本质:  放入队列                 将DML操作成功写入日志文件
                提交    exec                         commit
                回滚    discard                    rollback
             开启事务   multi                       自动开启,以事务中第一条DML为标志。(MySQL:start transaction)    

          举例:转账
                (1)没有事务
                    decrby tom 100    
                    incrby mike 100    
                    
                (2) 有事务                    
                    multi
                    decrby tom 100    
                    incrby mike 100    
                    exec            

    (二)事务中的锁:举例:买票
           set ticket 1
           set tom    1000
           
           开启事务:
            第一个客户端(人 tom)
                multi
                decrby ticket 1
                decrby tom    100
                exec
                
            另外一个人:快
                decrby ticket 1

    (三)消息机制
        1、消息的类型: Queue:队列(一对一)
                        Topic:主题(群发)
    
        2、Redis只支持Topic,做一个聊天室,只支持字符串
        3、消息的实现:(*)Redis和Kafka:只支持Topic
                       (*)JMS:Java Messaging Service,Java的消息服务,JavaEE标准之一
                                 都支持:Queue和Topic
                                 Weblogic,WebSphere,JBoss
                                
        4、Redis消息机制的结构
        5、命令
            ?publish:发布消息
            ?格式:publish channel名称 “消息内容”

            ?subscribe: 订阅消息
            ?格式:subscribe channel名称

            ?psubscribe: 使用通配符定义消息
            ?格式:psubscribe channel*名称        

 

Haoop之高速缓存redis 之十九  Haoop之高速缓存redis 之十九

五、Redis的持久化 -----> 将内存中的数据保存到硬盘上
    1、RDB:快照(默认) ----> dump.rdb
        (*)相当于定期给内存中的数据照一张照片
        (*)相关参数
            ################################ SNAPSHOTTING  ################################
            从下往上看
            
                     时间
                     (秒)    Key的个数
            147 save 900     1       ----> 15分钟内,如果有1个key的value发生了变化,则执行RDB
            148 save 300     10      ----> 300秒内,如果有10个key的value发生了变化,则执行RDB
            149 save 60      10000   ----> 60秒内,如果有10000个key的value发生了变化,则执行RDB
            
            其他参数:参考讲义P18页
            
        (*)RDB问题:两次RDB之间,数据肯定会丢失

    2、AOF:日志
        (*)配置:默认禁用
            509 appendonly yes
            513 appendfilename "appendonly_6379.aof"
            
        (*)测试:
        (*)AOF产生的时机:什么时候记录日志?
                # appendfsync always  ---> 每个操作
                appendfsync everysec  ---> 每秒
                # appendfsync no
        
        
        (*)AOF日志的重写(overwrite): 使用压力测试
            (*)当AOF超过64m时,发生重写
    Haoop之高速缓存redis 之十九
六、Redis的集群:功能:实现读写分离
    1、Redis的集群:主从、实现读写分离(只能从主节点上写入)
                    从节点只读
    
    2、体系结构和原理:参考讲义P20页
        (*) 两种结构:星型模型、线型模型
        Haoop之高速缓存redis 之十九
    3、配置星型模型
       (*) cp redis_6379.conf redis_6380.conf
           cp redis_6379.conf redis_6381.conf
           
       (*) 修改主节点的配置文件
?            主节点:关闭rdb和aof即可
                    147 #save 900 1
                    148 #save 300 10
                    149 #save 60 10000
                    509 appendonly no

            ?从节点:slaveof 192.168.88.111 6379  ----> 我的主节点是谁
                     开启rdb和aof
                    
                    
            6380:
                    50 port 6380
                   211 slaveof 192.168.88.111 6379
                   182 dbfilename dump_6380.rdb
                   514 appendfilename "appendonly_6380.aof"

            6381:
                    50 port 6381
                   211 slaveof 192.168.88.111 6379
                   182 dbfilename dump_6381.rdb                   
                   514 appendfilename "appendonly_6381.aof"
    启动:
        [[email protected] redis]# bin/redis-server conf/redis_6379.conf
        [[email protected] redis]# bin/redis-server conf/redis_6380.conf
        [[email protected] redis]# bin/redis-server conf/redis_6381.conf
    

相关文章:

  • 2021-06-19
  • 2021-12-30
  • 2022-02-25
  • 2021-11-20
  • 2021-10-11
  • 2021-12-26
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-08-20
  • 2022-12-23
  • 2021-05-29
  • 2021-09-12
  • 2021-04-12
相关资源
相似解决方案