1、Redis 特点
1.1.速度快: 10W QPS,基于内存,C语言实现,而众所周知,C语言是“距离”操作系统最近的的编程语言,执行速度快
1.2.单线程:Redis采用了单线程的架构,避免了多线程的资源竞争问题
1.3.简单: 代码短小精悍(单机核心代码只有23000行左右),单线程开发容易,不依赖外部库,使用简单
1.4.持久化:Redis还支持两种方式的持久化,即将数据写入磁盘的方法,RDB和AOF,两种方法各有利弊。
1.5.支持多种数据结构:Redis的全程是Remote Dictionary Server,是集合了五种数据结构:字符串、列表、哈希、集合、有序集合,可以说五种数据结构都是围绕于key-value的形式,而value不仅仅可以是值,还能是具体的数据结构,这给予了Redis强大的变化性和灵活能力。
1.6.支持多种编程语言:Redis目前基本可以说和MySQL的知名度一样高了,太多的运用场景,太多的支持语言,常见的比如:java的jedis,Python的redis、PHP、C、C++等等。
1.7.功能丰富: 支持Lua脚本,发布订阅,事务,pipeline等功能
1.8.主从复制:数据库的主从复制、集群功能是非常重要的,可以在Redis异常挂了后不影响客户端的使用
1.9.支持高可用和分布式:Redis从2.8版本后提供了高可用实现的Redis Sentinel,即Redis的“哨兵机制”,可以保证Redis节点的故障发现和自动转移,这实现了Redis强大的分布式功能。
2、应用场景
2.1.Session 共享:常见于web集群中的Tomcat或者PHP中多web服务器session共享
2.2.缓存:数据查询、电商网站商品信息、新闻内容
2.3.计数器:访问排行榜、商品浏览数等和次数相关的数值统计场景
2.4.微博/微信社交场合:共同好友,粉丝数,关注,点赞评论等
2.5.消息队列:ELK的日志缓存、部分业务的订阅发布系统
2.6.地理位置: 基于GEO(地理信息定位),实现摇一摇,附近的人,外卖等功能