#青训营笔记创作活动 Redis 简介
Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库,类似于 Java 中的 Map<key, value>。
Redis 与其他 key - value 缓存产品有以下特点:
(1)Redis 数据库中所有数据都存储在内存中,由于内存的读写速度远快于硬盘,因此 Redis 在性能上对比其他基于硬盘存储的数据库有非常明显的优势。 (2)Redis 支持数据的持久化,可以将内存中的数据异步写入到磁盘中,重启的时候可以再次加载进行使用。 (3)Redis 不仅仅支持简单的 key-value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。 (4)Redis 支持数据的备份,即 master-slave 模式的数据备份。
Redis 的特点:
(1)速度快
1)纯内存操作 2)单线程操作,避免了频繁的上下文切换 3) 采用了非阻塞 I/O 多路复用机制
(2)原子性
Redis 的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过 MULTI 和 EXEC 指令包起来。
(3)键值对的数据结构服务器
5种常用数据结构:String、hash、 list、 set、 zSet
(4)简单稳定
单线程,协议简单
(5)持久化
将内存数据写入磁盘
(6)主从复制
实现多个相同数据的 redis 副本
(7)高可用和分布式集群
哨兵机制实现高可用,保证 redis 节点故障发现和自动转移
(8)客户端语言多
java、php、python、c、c++、node.js等
使用 Redis 的缺点
(1)缓存和数据库双写一致性问题 (2)缓存雪崩问题 (3)缓存击穿问题 (4)缓存的并发竞争问题
Redis 应用场景
1、缓存数据库
合理使用缓存加快数据访问速度,降低关系型数据库压力
2、排行榜
按照热度排名,按照发布时间排行,主要用到列表和有序集合
3、计数器应用
视频网站播放数,网站浏览数
4、社交网络
赞、踩、粉丝、下拉刷新
5、消息队列
发布和订阅
6、其他场景。。