Redis,一个不只是数据库的内存式数据结构存储系统(一)

一、前言

相信有很多的小伙伴接触和学习Redis都是和本人一样,从将它作为一个非关系型数据库来使用开始的,甚至会认为,Redis就只是一个nosql数据库而已。(Redis:让我先哭一会…)
但是,Redis真的就只能是一个数据库吗?
在这里,本人将分几篇博客的篇幅和小伙伴们分享一下所学所得,由于本人水平有限,可能有错漏之处,欢迎小伙伴们加以指正。

二、Redis究竟是什么?它有什么用?

Redis是一个开源的,基于内存的数据结构存储系统,它可以作为数据库、缓存、消息中间件。
所以,真的不要只把它当成一个数据库啦~

它支持多种类型的数据结构,如字符串(String),散列(Hash),列表(List),集合(Set),有序集合(Sorted Set或者是ZSet)与范围查询,Bitmaps,Hyperloglogs 和地理空间(Geospatial)索引半径查询。其中常见的数据结构类型有:String、List、Set、Hash、ZSet这5种。

Redis 内置了复制(Replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(Transactions) 和不同级别的磁盘持久化(Persistence),并通过 Redis哨兵(Sentinel)和自动分区(Cluster)提供高可用性(High Availability)。

Redis也提供了两种持久化方式(这也是Redis和Memcached的区别之一),分别是RDB(快照)和AOF,可以将用户的数据持久化到磁盘中。当然,如果不需要进行持久化,也可以关闭默认开启的RDB持久化功能,将Redis作为一个高效的网络的缓存数据功能使用。

Redis不使用表,他的数据库不会预定义或者强制去要求用户对Redis存储的不同数据进行关联。

三、使用Redis作为数据库

在使用MySql、Oracle等关系型数据库时,常常会受困于其数据结构的单一。而相比于关系型数据库来说,Redis中丰富的数据结构决定了它可以解决大规模数据集合多重数据种类带来的挑战。
常见的应用场景:
1、生成订单号中的自增序列片段
由于订单号中的自增序列需要考虑并发、性能等问题,所以采用redis中的incr命令生成,效率高且不重复。

2、好友列表中的共同好友
可以先从数据库中找到每个用户各自的好友编号列表,然后将好友列表存入redis中,通过求交集操作得到共同好友的编号。

3、排行榜
利用ZSet数据结构类型来实现排行榜,例如点击量排行。但是一般排行榜数据的实时性较高,所以可以考虑不用做持久化。

此外,还有网站访问统计,验证码等数据过期处理等都可以使用Redis作为数据库来实现。

四、使用Redis作为缓存

在讲如何使用Redis作为缓存之前,首先需要了解到底什么是缓存,以及缓存的作用。
什么是缓存(Cache)?它的作用?
高速缓存(英语:cache,/kæʃ/ kash )简称缓存,原始意义是指访问速度比一般随机存取存储器(RAM)快的一种RAM,通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术。
通常指的就是内存中的一块控件,介于应用程序和永久性数据存储源(如硬盘上的文件或者数据库)之间,其作用是降低应用程序直接读写永久性数据存储源的频率,从而提高应用的运行性能。
在这里插入图片描述
在高并发系统中,常常会将一些读操作远大于写操作的数据放入内存,以减轻DB的压力,提高系统访问速度。当数据库中的数据发生变更时将缓存清除,下次读取时读取新的数据并存入缓存。而Redis基于内存的特性,决定了它能很好的解决这个问题。
Redis作为缓存时存储的数据一般为:
1、热点数据:即查询次数非常多、很少更改的数据;
2、查询速度很慢、且很少更改的数据。
例如:分类信息的缓存
一般网站的分类信息(例如苏宁易购等电商网站的产品分类)是很少会发生变更的,所以可以考虑每次读取分类信息时都先从Redis中读取,如果不存在,再从数据库中读取,并且读取后将分类信息同时缓存到Redis中。这样下次读取分类信息时就可以直接从Redis中读取到,可以提高应用程序的性能。

五、使用Redis作为消息中间件

使用方法可以参见https://blog.csdn.net/cp026la/article/details/86504276 。

(未完待续)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值