Redis
String类型操作
String是Redis的基本数据类型,可以包含任何数据,包括jpg图片或者序列化的对象。单个value值最大上限是1G字节。
List类型操作
List类型是一个双向链表,通过push、pop操作从链表的头部或者尾部添加删除元素。这使得list既可以用作栈,也可以用作队列。
Set集合类型
Redis的Set是string类型的无序集合。Set最多可以包含个元素。Set有删除和添加操作,还有集合的并集、交集、差集,set集合的元素不能重复。(好友推荐功能)
Sort Set排序集合类型
Sort Set也是string类型元素的集合,不同的是每个元素都会关联一个权,通过权值可以有序的获取集合中的元素。
Sort Set适用场合
获得热门帖子信息(回复量):
- SQL语句实现,但比较耗费数据库资源:select * from message order by backnum desc limit 5;
- Zrevrank key member
持久化功能
Redis为了内部数据的安全考虑,会把本身的数据以文件形式保存到硬盘中一份,在服务器重启之后会自动把硬盘的数据恢复到内存中。
RDB快照持久化(Snap shotting)
该持久化默认开启,在指定的时间间隔内,执行指定次数的写操作,一次性把Redis中的全部数据保存一份存储在硬盘,如果数据非常多就不适合频繁持久化该操作。
数据修改的频率非常高,备份的频率也高;
数据修改的频率低,备份的频率也低;
Save 900 1 #900秒内如果超过一个key被修改,则发起快照保存
Save 300 10 #300秒内如果超过10key被修改,则发起快照保存
Save 60 10000 #60秒内如果超过10000key被修改,则发起快照保存
缺点:
1 数据的完整性和一致性不高,因为RDB可能在最后一次备份时宕机了。
2 备份时占用内存,因为Redis 在备份时会独立创建一个子进程,将数据写入到一个临时文件(此时内存中的数据是原来的两倍哦),最后再将临时文件替换之前的备份文件。
所以Redis 的持久化和数据的恢复要选择在空闲时执行。
AOF持久化(Append only file)
AOF持久化需要手动开启,将Redis执行的每次写命令记录到单独的日志文件中(有点像MySQL的binlog);当Redis重启时再次执行AOF文件中的命令来恢复数据。与RDB相比,AOF的实时性更好(因此已成为主流的持久化方案。)
AOF重写机制(针对 AOF文件大的问题,提供重写的瘦身机制。)
AOF的工作原理是将写操作追加到文件中,文件的冗余内容会越来越多。所以Redis 新增了重写机制。当AOF文件的大小超过所设定的阈值时,就会对AOF文件的内容压缩。
重写的原理:Redis 会创建(fork)出一条新进程,读取内存中的数据,并重新写到一个临时文件中。(并没有读取旧文件)最后替换旧的aof文件。
触发机制:当AOF文件大小是上次rewrite后大小的一倍且文件大于64M时触发。这里的“一倍”和“64M” 可以通过配置文件修改。
AOF 的优缺点
优点:数据的完整性和一致性更高
缺点:因为AOF记录的内容多,文件会越来越大,数据恢复也会越来越慢。