第十二课记录 Redis

来源:互联网 发布:suse 查看端口 编辑:程序博客网 时间:2024/06/05 09:38

一、什么是内存数据库?为什么要把数据存入内存?

        1、为什么要把数据存入内存?   ----->   速度快
        2、画图: 企业级应用架构发展变化:  B/S结构 

                       在大数据的背景下,企业级应用架构发展变化

        3、了解一下MemCached(缓存)
                问题:
                        (1):不支持持久化
                        (2):没有丰富的数据类型
        4、Redis在大数据实时计算中,可做为Stom、Spark、Streaming、Flink的存储结果位置
  

二、安装和配置Redis

        1、Redis是否支持Windows?
        2、步骤:
                (1) 解压:  tar -zxvf redis-4.0.1.tar.gz
                (2) 编译:  make  (Redis是用C语言写的, 所以要用make)
                (3) 安装:  make PREFIX=/root/training/redis install   (PREFIX 表示安装目录)
        3、Redis 的命令
                [root@localhost bin]# ll
                total 35420
                -rwxr-xr-x. 1 root root 5599518 Sep  1 10:48 redis-benchmark                   #压力测试工具
                -rwxr-xr-x. 1 root root 8309811 Sep  1 10:48 redis-check-aof                   #检查AOF持久化文件
                -rwxr-xr-x. 1 root root 8309811 Sep  1 10:48 redis-check-rdb                   #检查RDB持久化文件
                -rwxr-xr-x. 1 root root 5730542 Sep  1 10:48 redis-cli                         #客户端工具
                lrwxrwxrwx. 1 root root      12 Sep  1 10:48 redis-sentinel -> redis-server    #Redis提供的哨兵机制  ------->  实现Redis的HA
                -rwxr-xr-x. 1 root root 8309811 Sep  1 10:48 redis-server                      #服务端工具

        4、Redis的核心配置文件: 
                (1) redis.conf
                        #mkdir /root/training/redis/conf
                        #cp /root/training/redis-4.0.1/redis.conf /root/training/redis/conf
                        #vi redis.conf
                                说明: 
                                (a) port 6379     --表示Redis默认端口
                                (b) daemonize no  --表示Redis是否以后台启动的方式运行(改为yes)
                        #./redis-server ../conf/redis.conf
                        #ps -ef|grep redis

                (2)sentinel.conf    ----> 配置Redis的哨兵
                        #cp /root/training/redis-4.0.1/sentinel.conf /root/training/redis/conf

三、Redis的基础操作

        1、命令行
        2、Java API


四、Redis的事务管理

        1、复习:什么是事务?  ACID:原子、持久、一致、隔离
                关系型数据库和NoSQL数据最库大的区别: NoSQL不(很弱)支持事务
  
                2、对比:Oracle的事务和Redis的事务(填空题)
                                                        Oracle的事务                      Redis的事务
                        (1)本质       将DML操作写入日志文件,            将一组操作放入队列中,
                                           如果日志写入成功,就表             等待支持
                                           示事务成功  
                        (2)操作       DML语句(insert update delete)     key-value的操作
                        (3)提交       commit (也可以用ddl)                   exec(将队列中的操作逐个执行)
                        (4)回滚       rollback(断开链接)                        discard(将队列中的操作抛弃)
                                           回滚:1显式回滚 2隐式回滚
 
        3、举例: Redis的事务: 模拟转账
                set tom 1000
                set mike 1000
 
                multi
                decrby tom 100     -- 减100  这个时候执行会打印出一个QUEUED,表示放入到队列中  
                incrby mike 100    -- 加100  这个时候执行会打印出一个QUEUED,表示放入到队列中  
                exec

        4、Redis的锁机制: watch
                set ticket 1
                set tom 1000
 
                用户一:
                        watch ticket ----> 监视值的变化 
                         multi
                        decr ticket
                        decrby tom 100
                        exec
 
                用户二: 在用户一提交前, 已将票买走
                        decr ticket
 

五、Redis的消息机制

        消息的发布与订阅,适合做一个在线聊天室
        (1) publish 发布消息
                格式: publish channel 名称 "消息内容"

        (2) subscribe 订阅消息
                格式: subscribe channel 名称 

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

六、Redis的持久化:  RDB、AOF

        (1) RDB是快照
        (2) AOF是基于日志


七、Redis的主从复制

        (1) 集群的作用
                a. 主从备份防止主机宕机
                b. 读写分离, 分担master的任务
                c. 任务分享, 如从服分别担备份工作与计算工作
        (2) Redis集群的两种部署方式 

        (3) Redis主从服务的通信原理

        (4) 配置 Redis 的集群(主从模式)
                a. 主节点: 关闭rdb和aof即可
                b. 从节点: slaveof localhost 6379
                                 开启 rdb和aof

        (5) Redis 集群的高可用性
                a. Redis 2.4+ 自带了一个HA实现Sentinel(哨兵)
                b. 配置文件: sentinel.conf
                        b1) sentinel monitor mymaster 192.168.137.11 6379  1
                                                        别名          主节点IP            端口  几个哨兵
                        b2) sentinel auth-pass <master-name> <password>
                                配置连接主节点的密码
                        b3) sentinel down-after-milliseconds mymaster 30000
                                表示多少秒内, 没收到主节点的心跳,哨兵就认为主节点down
                        b4) sentinel parallel-syncs mymaster 1
                                选举出新的主节点后,可以同时连接其它从节点的个数
                        b5) sentinel failover-timeout mymaster 180000
                                失败切换时, 允许的最在时间
        c. redis-sentinel ../etc/sentinel.conf

 

八、Redis的HA

   略

原创粉丝点击