Redis基本介绍之数据结构

52 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第13天,点击查看活动详情

Redis

Redis是基于C语言写的,而且是内存中的数据库,读写速度很快。在项目中 也经常会使用到Redis,一般会用来做缓存、或者分布式锁,也可以用来设计消息队列 ,同时还支持事务、持久化、Lua脚本、多种集群方案。

Redis是一个高性能的基于Key-Value结构存储的NoSQL开源数据库。大部分公司采用Redis来

实现分布式缓存,用来提高数据查询效率。

至于我们为什么要选择Redis,我总结为以下六个原因:

1)、基于内存存储,可以降低对关系型数据库的访问频次,从而缓解数据库压力

2)、数据IO操作能支持更高级别的QPS,官方发布的指标是10W;

3)、提供了比较多的数据存储结构,比如string、list、hash、set、zset等等。

4)、采用单线程实现IO操作,避免了并发情况下的线程安全问题。

5)、可以支持数据持久化,避免因服务器故障导致数据丢失的问题

6)、Redis还提供了更多高级功能,比如分布式锁、分布式队列、排行榜、查找附近的人等功能,为更复杂的需求提供了成熟的解决方案。

Redis的数据结构

数据类型内部实现应用场景
String(字符串)int和SDS(简单动态字符串)缓存对象、常规计数、 分布式锁
List(列表)双向链表或压缩列表(节点个数<512)消息队列
Hash(哈希表)哈希表或压缩链表(节点个数<512 )缓存对象、购物车
Set(无序集合)整数集合(intset)或哈希表(元素都是整数&&个数< 512 ==整数集合)点赞、共同关注(交集运算)、抽奖活动(set拥有去重功能,保证同一个用户不会中奖两次)
Zset(有序集合)压缩列表或跳表排行榜