Redis数据库数据结构

Redis是一种非关系型键值对数据库,以其O(1)的读写速度和丰富的数据结构被广泛应用。本文介绍了Redis的基本概念,如内存存储、键值类型、数据结构(String、Hash等)及其在缓存、计数器、分布式锁等场景的应用。同时,深入探讨了Redis的String数据结构及其优化,包括动态扩容和内存布局策略。
摘要由CSDN通过智能技术生成

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、排行榜

<
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值