Redis的各种⽤途以及使⽤场景
⼀、为什么使⽤
1. 解决应⽤服务器的cpu和内存压⼒
2. 减少io的读操作,减轻io的压⼒
3.关系型数据库的扩展性不强,难以改变表结构
⼆、优点
三、适⽤场景
1.    数据⾼并发的读写
2.    海量数据的读写
3.    对扩展性要求⾼的数据
四、不适场景
1.    需要事务⽀持(⾮关系型数据库)
2.    基于sql结构化查询储存,关系复杂
五、Redis结构
Redis是⼀个开源的key—value型数据库,⽀持string、list、set、zset和hash类型数据。对这些数据的操作都是原⼦性的,redus为了保证效率会定期持久化数据。
六、使⽤场景
1.    配合关系型数据库做⾼速缓存,缓存⾼频次访问的数据,降低数据库io,分布式架构,做session共享
2.    可以持久化特定数据。利⽤zset类型可以存储排⾏榜利⽤list的⾃然时间排序存储最新n个数据
七、Linux下redis
2.linux下redis常⽤命令:
redis-benchmark:性能测试⼯具
redis-server:启动redis服务器
redis-cli:启动redis客户端,操作⼊⼝
⼋、Redis基础知识
1.    端⼝:6379
2.    默认16个数据库,下标从0开始
3.    单线程:redis是单线程+io多路复⽤:检查⽂件描述的就绪状态,Memchached:多线程+锁
1.    redis数据类型:String set list hash zset
九、Redis命令
1.    key操作
String类型:String是⼆进制安全的,可以包含任何数据源,最⼤512m
String批量处理:
1.    List:链表
特点:单键多值
Redis列表是简单的字符串列表,从左或者从右插⼊
底层是双向链表,对两端的操作性能很⾼,通过下标查询性能很低
Set:类似list的⽆序集合,保证列表中不会有重复数据,底层是⼀个value为null的hash表
hash:键值对集合,类似map<String,Object>
zset:与set集合⾮常相似,每个成员都关联了score,可以⽤来排序
⼗、redis持久化
1.    两种⽅式:rdb(redis database)和aof(append of file)
2.    RDB:在指定时间间隔内,将内存中的数据作为⼀个快照⽂件(snapshot)写⼊到磁盘,读取的时候也是直接读取snapshot⽂件到内存中
①持久化过程:redis单独创建(fork)⼀个进程来持久化,会先将数据写⼊临时⽂件中,待上次持久化结束后,会将该临时⽂件替换上次持久化⽂件,⽐aof⾼效,但是最后⼀次数据可能会丢失
②Fork:在linux中,fork()会产⽣⼀个跟主进程⼀样的⼦进程,出于效率考虑,主进程和⼦进程会公⽤⼀段物理内存,当发⽣改变的时候,才会把主进程“”写时复制”⼀份给⼦进程
③Redis备份的⽂件:在f中设置,dbfilename默认为:dump.rdb
④ Rdb保存策略:
1.    900s 1 file change
2.    300s 10file change
3.    60s 10000file change
⑤Rdb的备份:
1.    config get dir 得到备份的⽂件夹
2.    复制备份⽂件
⑥Rdb恢复:
1.    关闭redis
2.    将备份⽂件复制到⼯作⽬录下
3.    启动redis,⾃动加载
5.
1.    AOF : 以⽇志形式记录每个写操作,启动时通过⽇志恢复操作,开启AOF:默认不开启,进⼊f到appendonly yes打开
2.    修复AOF:redis-check-aof –fix appendonly.aof
3.    同步频率:每秒记录⼀次,如果宕机该秒记可能失效
4.    Rewrite:bgrewriteaof 因为⽇志是追加⽅式,⽂件会越来越⼤,当超过了设置的阈值时,⽇志⽂件会压缩,保留仅可以恢复的⽇志RDB和AOF对⽐ 1.    节省磁盘空间 2恢复速度快
ROD缺点:
1.      数据太⼤时,⽐较消耗性能
2.    ⼀段时间保存⼀次快照,宕机时最后⼀次可能没有保存
AOF优点:
1.备份机制更加稳健
2.可读的⽇志⽂件,通过aof恢复更加稳健,可以处理失误
AOF缺点:
1.⽐RDB更占磁盘
2.备份速度较慢
3.iii每次都同步⽇志,有性能压⼒
RDB和AOF哪个好
1.    官⽅推荐都启⽤
2.    对数据不敏感,单独⽤RDB
3.    不建议单独使⽤AOF
4.    若作为纯缓存使⽤,可以都不开启
⼗⼀、Redis事务:输⼊multi,输⼊的命令都会依次进⼊到队列中,但不会执⾏,直到输⼊exec,redis会将之前命令队列中的命令依次执⾏,通过discard可以放弃组队。
1. 主要作⽤:序列化操作,串联多个命令防⽌别的命令插队
2. 悲观锁:每次拿到数据的时候都会上锁,或者等待别⼈处理完再去拿锁,传统的关系型数据库⾥边很多⽤到了这种锁机制,⽐如⾏锁、表锁、读锁、写锁
3. 乐观锁:每次拿数据的时候总认为别⼈不会修改数据,所以不会上锁。但是更新的时候回去判断别⼈有没有更改数据,使⽤版本号机制。乐观锁适⽤于多读的应⽤类型,可以提⾼吞吐量。
4. Redis使⽤乐观锁:redis就是利⽤check-and-set机制实现事务
5.三⼤特性: 1.单独的隔离操作:事务中的所有命令都会序列化,按顺序执⾏。不会被其他客户端打断
2.没有隔离级别概念:队列中的命令没有提交之前不会被执⾏,事务外不能查看事务内的更新
3.不能保证原⼦性:跳过错误,依旧执⾏,没有回滚
⼗⼆、Redis订阅/发布
是进程中的⼀种消息通信模式,发送者pub发送消息,订阅者sub接收消息
⼗三、Redis主从复制
1.  是什么:主从复制就是主机数据更新后根据配置和策略,⾃动同步到备份机的master/slaver机制,master写为主,slave读为主
2.⽤处:
1. 读写分离,性能拓展。
2. 容灾快速恢复
3.  配置服务器(配从不配主):
1.    拷贝多个f⽂件
2.    开启daemonize yes
3.    Pid⽂件名字
4.    指定端⼝
5.    Log⽂件名字
redis支持的五种数据类型6.    Dump.rdb名字
7.    Appendonly 关掉或者换名字
⼗四、Jedis
1.  所需jar包:
1.  common-pool-1.6jar包
2.  jedis-2.1
2. 获取jedis对象:Jedis jedis = new Jedis(“ip” ,端⼝号);
⼗五、集分布:
实现对redis的⽔平拓展,启动n’的redis节点,将整个数据分布在这n个节点中
配置conf⽂件:
1.    拷贝多个f⽂件
2.    开启daemonize yes
3.    Pid⽂件名字
4.    指定端⼝
5.    Log⽂件名字
6.    Dump.rdb名字
7.    Appendonly 关掉或者换名字
配置cluster⽂件:
1. cluster-enable yes 打开集模式
2. f 设置⽣成的节点配置⽂件名
3. cluster-node-timeout 15000设置节点失联时间,超多该时间(毫秒),集⾃动进⼊主从切换

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。