第十二课记录 Redis
一、什么是内存数据库?为什么要把数据存入内存?
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 的命令
[[email protected] 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
略