阶段性复习Redis,持续加载~~~
Redis->Nosql数据库
概念:16个库默认0号库
要能说明多路IO复用
redis命令是原子性的,要么成功都成功,要么失败都失败
Redis | Memcached | |
---|---|---|
区别 | 多数据类型常用:list、set、hash、zset | 只有key-value键值对 |
持久化 | 支持持久化 | 无持久化 |
实现机制 | 单线程+IO多路复用 | 多线程+锁 |
redis启动:
1、备份redis.conf
2、修改redis.conf文件里的daemonize no 改成yes,让服务以守护进程方式后台启动
3、启动命令:执行redis-server /myredis/redis.conf
4、客户端连接:redis-cli
多个端口:redis-cli -p 6379
5、测试连接成功:ping,返回pong为成功
Redis五大数据类型:(相关命令务必清楚)
-》String
String是二进制安全的。
图片视频存到数据库里,要序列化成二进制到库里,取出来再通过序列化显示播放正常,最大支持512M
-》List
双向链表,一般都是做塞右取
-》Set
无序数组,插入数据没有顺序,但是不能重复,底层是一个value为null的hash表,所以添加,删除,查找的复杂度都是O(1)。
-》hash
hash是一个String类型的field和value的映射表,hash特别适合用于存储对象。一个大K对应多个field,每个field对应存着value。
-》zset
有序集合,一个大K对应多个Score,每个score对应一个value,适合做排行榜实现。
redis事务:
1、从输入Multi命令开始,输入命令为组队阶段,不执行,直到输入exec后进入执行阶段,在执行阶段没有隔离性或原子性操作或回滚或隔离级别,一个命令没执行不会影响其他命令执行
2、redis使用乐观锁,读数据不上锁,写数据看版本号,上多个锁只有一个成功
3、这里要考虑超卖问题
Redis持久化:
优点 | 缺点 | 特点 | |
---|---|---|---|
RDB | 节省磁盘空间、恢复速度快 | 用了写时拷贝技术,单数数据过大是也比较消耗性能、redis出现问题会丢数据 | 快照方式存持久化文件 |
AOF | 备份机制更稳健,丢失数据概率更低、可读的日志文本,通过AOF文件,处理误操作 | 占用磁盘空间大、持续很长时间恢复备份速度慢、每次读写发生IO操作会有点慢性能压力大、存在个别bug造成恢复不成功 | 日志方式存储 |
rdb的保存策略,及手动保存快照save及bgsave比较特点要了解
redis主从复制:
只能一个主机,多个从机。mysql真正能写的主机也只有一个。
一主二仆模式:
1、切入点:slave从头开始复制
2、从机不可写
3、主机shutdown后原地待命,等待主机启动
4、从机down后,看是在内存还是配置文件中,配置文件中还可以找到主机
哨兵模式:
一直监听着主机,如果发现主机down了,推一个从机当主机
redis集群:
差不多要6台,3主3从
好处:
· 实习扩容
· 分摊压力,写操作根据key的转换hash码取模决定存在哪个节点哪个机器里,分摊写压力。
· 无中心配置
不足:
· 多键操作不被支持
· 事务不支持,lua脚本不支持
· 集群出的晚,已经有了别的集群再换过来复杂度大