深入解析深入解析Redis中常见的应用场景中常见的应用场景
前言前言
Redis是一个key-value存储系统,现在在各种系统中的使用越来越多,大部分情况下是因为其高性能的特性,被当做缓存使
用,这里介绍下Redis经常遇到的使用场景。下面话不多说了,来一起看看详细的介绍吧。
Redis特性特性
一个产品的使用场景肯定是需要根据产品的特性,先列举一下Redis的特点:
读写性能优异
持久化
数据类型丰富
单线程
数据自动过期
发布订阅
分布式
这里我们通过几个场景,不同维度说下Redis的应用。
高性能适合当做缓存高性能适合当做缓存
缓存是Redis最常见的应用场景,之所有这么使用,主要是因为Redis读写性能优异。而且逐渐有取代memcached,成为首选
服务端缓存的组件。而且,Redis内部是支持事务的,在使用时候能有效保证数据的一致性。
作为缓存使用时,一般有两种方式保存数据:
1、读取前,先去读Redis,如果没有数据,读取数据库,将数据拉入Redis。
2、插入数据时,同时写入Redis。
方案一:实施起来简单,但是有两个需要注意的地方:
1、避免缓存击穿。(数据库没有就需要命中的数据,导致Redis一直没有数据,而一直命中数据库。)
2、数据的实时性相对会差一点。
方案二:数据实时性强,但是开发时不便于统一处理。
当然,两种方式根据实际情况来适用。如:方案一适用于对于数据实时性要求不是特别高的场景。方案二适用于字典表、数据
量不大的数据存储。
丰富的数据格式性能更高,应用场景丰富丰富的数据格式性能更高,应用场景丰富
Redis相比其他缓存,有一个非常大的优势,就是支持多种数据类型。
数据类型数据类型 说明说明
string 字符串,最简单的k-v存储
hash hash格式,value为field和value,适合ID-Detail这样的场景。
list 简单的list,顺序列表,支持首位或者末尾插入数据
set 无序list,查找速度快,适合交集、并集、差集处理
sorted
set
有序的set
其实,通过上面的数据类型的特性,基本就能想到合适的应用场景了。
string——适合最简单的k-v存储,类似于memcached的存储结构,短信验证码,配置信息等,就用这种类型来存储。
hash——一般key为ID或者唯一标示,value对应的就是详情了。如商品详情,个人信息详情,新闻详情等。
list——因为list是有序的,比较适合存储一些有序且数据相对固定的数据。如省市区表、字典表等。因为list是有序的,适合根
据写入的时间来排序,如:最新的***,消息队列等。
set——可以简单的理解为ID-List的模式,如微博中一个人有哪些好友,set最牛的地方在于,可以对两个set提供交集、并集、
差集操作。例如:查找两个人共同的好友等。
Sorted Set——是set的增强版本,增加了一个score参数,自动会根据score的值进行排序。比较适合类似于top 10等不根据插
入的时间来排序的数据。
如上所述,虽然Redis不像关系数据库那么复杂的数据结构,但是,也能适合很多场景,比一般的缓存数据结构要多。了解每
种数据结构适合的业务场景,不仅有利于提升开发效率,也能有效利用Redis的性能。
单线程可以作为分布式锁单线程可以作为分布式锁
评论11
最新资源