Redis核心数据结构
一、什么是Redis
1、Rdies是一种非关系型的键值对数据库,取出或者插入关联值的时间复杂度为O(1);
2、Redis的数据存放在内存中;
3、键(key)的类型可以是字符串、整型、浮点型等,且键是唯一的;
4、值(val)的类型可以是string、hash、list、set、sorted set等;
5、Redis内置了复制,磁盘持久化,LUA脚本,事务,SSL,客户端代理等功能。
6、通过Redis烧饼和自动分区提高可用性。
二、应用场景
1、缓存
普通的数据库数据存放在硬盘文件上,IO速度慢。
而redis数据库的数据存放在内存中,所以可以当做缓存来使用。
下图是一张16年左右的各种内存介质的成本和速度的统计表
2、计数器
可以对String进行自增自减运算,从而实现计数器功能。Redis这种内存型数据科的读写性能非常高,很适合存储频繁读写的计数量。
3、分布式ID生成
利用自增特性,一次请求一个大一点的步长如 incr 2000,缓存在本地使用,用完再请求。
4、海量数据统计
位图(bitmap):存储是否参加过某次活动,是否已读谋篇文章,用户是否为会员,日活跃统计。
5、会话缓存
可以使用Redis来统一存储多台应用服务器的会话信息。当应用服务器不在存储用户的会话信息,也就不在具有状态,一个用户可以请求任意一个应用服务器,从而更容易实现高可用性和伸缩性
6、分布式队列\阻塞队列
LIst是一个双向链表,可以通过Ipush/rpushg和Ipop/rpop写入和读取消息。可以通过使用brpop/bIpop来实现阻塞队列。
7、分布式锁实现
在分布式场景下,无法使用基于进程的锁来对应多个节点上的进程进行同步。可以使用Redis自带的SETNX命令实现分布式锁。
8、热点数据存储
最新评论、最新文章列表,使用List存储, Itrim去除热点数据,删除老数据
9、社交类需求
Set可以实现交集,从而实现共同好友功能。Set通过求差集,可以进行好友推荐,文章推荐。
10、排行榜
<