Redis基础与数据结构
Redis基础与数据结构
认识一下Redis的基本使用场景和数据结构类型。
Redis简介
Redis是一种基于内存的非关系型数据库,对数据的读写操作均是在内存中完成的,因此读写速度非常快,常用于缓存、消息队列、分布式锁等场景。此外,Redis还支持事务、持久化、Lua脚本、多种集群方案(主从复制模式、哨兵模式、切片机群模式)、发布/订阅模式、内存淘汰机制、过期删除机制等。
Redis和Memcached的区别
两者的共同点是:
- 都是基于内存的数据库,一般都用来当缓存用
- 都有过期策略
- 性能都较高
区别在于:
- Redis支持的数据类型更丰富,而Memcached只支持最简单的k-v类型
- Redis支持持久化,而Memcached不支持
- Redis支持原生的集群模式,而Memcached需要依靠客户端来实现集群
- Redis还支持发布/订阅模型、Lua脚本、事务等功能,Memcached不支持。
为什么用Redis作缓存
- Redis具备高性能
- Redis支持高并发
Redis数据结构
Redis的五种基础数据类型:
- String:缓存对象、常规计数、分布式锁、共享session信息等
- List:消息队列(但是有两个问题:生产者需要自行实现全局唯一;不能以消费组形式消费数据)
- Hash:缓存对象、购物车等
- Set:聚合计算(并集、交集、差集)等,比如点赞、共同关注、抽奖活动
- Zset:排序场景,比如排行榜、电话和姓名排序等
后续版本Redis又支持四种新的数据类型:
- BitMap:状态统计,比如签到、判断用户登陆状态、连续签到用户总数等
- HyperLogLog:海量数据基数统计,比如百万级网页UV统计
- GEO:存储地理位置信息,比如打车
- Stream:消息队列,相比于List实现的消息队列多了自动生成全局唯一消息ID和支持以消费组形式消费数据这两个特性
Redis数据类型详解
String
String类型的底层数据结构实现主要是int
和SDS
(简单动态字符串)。
List
Hash
Set
Zset
BitMap
HyperLogLog
GEO
Stream
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Mind Palace!