一. Redis简介
Redis是一种基于键值对的NoSQL数据库,与很多键值对数据库不同的是,Redis中的值可以由string,hash,list,set,zset,BitMaps(位图),HyperLogLog(是用来做基数统计的算法),GEO(地理信息定位)等多种数据结构和算法组成,所以Redis可以满足很多实用场景.Redis会把所有数据都放在内存中,所以它的读写性能非常惊人.Redis还可以将内存中的数据利用快照和日志的形式保存到硬盘上,断电时,内存中的数据不会"丢失".Redis还提供了键过期(可以实现缓存),发布订阅,事务,流水线(Pipeline),Lua脚本等附加功能.
二. Redis特点
1.速度快 : Redis所有的数据都存放在内存中
Redis是C语言实现的,距离操作系统会更近,执行速度相对会更快
Redis是单线程架构,预防了多线程可能产生的竞争问题
Redis源代码精打细磨
2.基于键值对的数据结构服务器 : 五种数据结构,同时在字符串的基础上演变出了位图(Bitmaps)和HyperLogLog两种数据结构.
3.丰富的功能 : 键过期(可以实现缓存),发布订阅,事务,流水线(Pipeline,批处理,客户端一次将一批命令上传到Redis,减少网络的开销),Lua脚本
4.简单稳定
5.客户端语言多(支持java,PHP,Python,C,C++等)
6.持久化 : RDB和AOF,可以用这两种策略将内存中的数据保存到硬盘
7.主从复制 : Redis有复制功能(分布式Redis的基础)
8.高可用和分布式
三. Redis使用场景
1.缓存(几乎所有的大型网站都使用缓存机制,合理的使用缓存不仅可以加快数据的访问速度,而且能够有效降低后端数据源的压力)
2.排行榜系统(热度排名,发布时间排名等)
3.计数器功能(视频网站播放数,电商网站浏览数,为了保证数据的实时性,每一次播放和浏览都要做加1的操作,并且并发量很大对于传统关系型数据的性能是一种挑战,Redis天然支持计数功能而且性能非常好)
4.社交网络(赞/踩,共同好友/喜好,推送,下拉刷新等)
5.消息队列系统(Redis有发布订阅功能和阻塞队列的功能)
ps:本人初学redis,博客是结合付磊和张益军的