一.Redis存储机制分为:
1.shupshot(定时快照方式),文件名为dump.rdb,你可以配置redis的持久化策略,例如每N秒钟有超过M次更新,就将数据写入磁盘,或者可以手动调用SAVE。
2.AOF:基于语句追加log文件的方式
两者比较:快照方式性能明显高于AOF方式,但AOF数据的安全性高于快照方式,快照方式时,如果长时间不写入RDB,但Redis又遇到崩溃,那么没有写入的数据就无法回复了,AOF的缺陷是追加log文件可能过大,恢复慢(Rwrite),实时也log会影响redis本身性能
二.Redis是一个基于内存的高性能key-value数据库,单个value最大限制1GB,缺点是数据库容易受到物理内存的限制,因此Redis适合较小数据量的高性能操作
三.Redis好处:
(1)速度快,数据存在内存中,类似于HashMap,Redis全程使用hash结构,读取快;Redis使用非阻塞IO,IO多路复用,使用单线程轮询描述符,将数据库的开、关、读、写转换成了事件,采用自己实现的事件分离器,效率高。
(2)支持丰富的数据类型:String、List、Set、Zset、Hash。
对象存redis是将对象序列化为字节数组byte[]后,再存到redis中,需要数据时,就从redis数据库中取出字节数组,在经过反序列化,将字节数组转换成对象使用。
(3)支持事务,操作都是原子性的。
(4)可用于缓存,按key设置过期时间,过期后自动删除。
(5)可以通过redis实现session共享。
四.Rrdis常见性能问题:Master&Slave主从复制,主机数据更新后,根据配置和策略,自动同步到备机,Master以写为主,Slave以读为主。
Master写内存快照,会阻塞主线程工作,Master如果AOF持久化,AOF文件过大会影响Master重启的恢复速度,因此Master最好不要做任何持久化工作,如果数据比较重要,可以某个Slave开启AOF备份数据。
五.Redis是单进程单线程的
redis利用队列技术将并发访问变为串行访问,
redis并发竞争问题:Redis本身没有锁的概念,多客户端链接并不存在竞争,由于客户端链接混乱造成的问题有2种解决方案:(1)客户端用Synchronized或lock
(2)服务器利用setnx实现锁
六.redis事务
MULTI | EXEC | DISCARD | WATCH |
开启 | 提交 | 回滚 | 有点像tryLock,监控key,是否有其他链接修改,如果被其他链接的客户端修改,EXEC将执行失败 |