Redis知识点总结
基本数据类型
1、string,kv结构,功能:添加、查询、+1、-1、获取长度、是否存在。
2、list,双链表,功能:左/右添加、左/右删除、获取长度、范围查询。
3、hash,HashMap(Java),功能:添加、查询、是否存在、获取所有、获取所有keys、获取所有vals。
4、set,HashSet(Java),功能:添加、删除、查看所有、是否存在、查看个数、求交集并存储、求并集。
5、zset,TreeSet(Java),功能:添加、删除、查看个数、查看权重、范围查询和它的逆序集合。
6、bitmap,二进制string,功能:设置当前位、获取当前位、统计为1的个数、进行逻辑运算并将结果保存。
单线程模型
1、redis单线程使用IO多路复用技术保证效率。
持久化机制
RDB和AOF
RDB:以二进制 + 数据压缩方式存储,文件体积小。会有数据丢失的问题:在生成上一次快照和下一次快照的间隔中追加到redis的数据可能会丢失。
AOF:先将写入的数据实时加入到内存缓存中,再根据不同策略写入到磁盘。可以考虑appendfsync everysec,即每秒钟同步一次,显式地将多个写命令从内存缓存同步到硬盘。这样即使丢数据,也只会丢1秒的。
单机redis数据持久化方案
采用混合持久化方式,即RDB与AOF相结合的方式。
具体来说,当 AOF rewrite 时,Redis 先以 RDB 格式在 AOF 文件中写入一个数据快照,再把在这期间产生的每一个写命令,追加到 AOF 文件中。因为 RDB 是二进制压缩写入的,这样 AOF 文件体积就变得更小了。其中 AOF rewrite 是指 AOF 文件中只保留当前 key 的最新值。