心向天空

人生三从境界:昨夜西风凋碧树,独上高楼,望尽天涯路。 衣带渐宽终不悔,为伊消得人憔悴。 众里寻他千百度,蓦然回首,那人却在灯火阑珊处。
扩大
缩小

谈谈redis的特性以及使用场景

ok?先从String开始讲:

 

String:

 

这是最简单的类型,就是普通的get和set,做简单的KV缓存。

 

但是在真实的开发环境中,很多men可能会吧很多复杂的结构也统一转成String去储存使用,比如有的men他就喜欢把List转换为JSONString进行储存,拿出来的时候再进行反序列什么的。

 

String的实际应用场景比较广泛的有:

 

缓存功能:String字符串是最常用的数据类型,不仅仅是redis,各个语言都是最基本类型。因此,使用redis进行缓存,使用其他数据库作为储存层,利用Redis支持高并发的特点,可以大大加快系统的读写速度,以及降低后端数据库的压力。

 

计数器:很多系统都会使用redis作为系统的实时计数器,它可能快速的实现计数和查询的功能。最终的数据可以在特定的时间在数据库或者其他储存介质进行永久性保存。

 

共享用户Session:用户重新刷新界面,可能都需要访问数据进行重新登录,或者访问页面缓存cookie,但是可以使用redis对用户的session进行集中管理,在这种模式之下只要保证Redis的高可用,每次用户Session的更新和获取都可以快速完成,大大的提高效率。

 

Hash:

这是一种类似于Map的结构,它可以把结构化的数据,比如说一个对象缓存在Redis中,然后每次进行读写缓存的时候,可以操作Hash里的某个字段。

 

List:

有序列表,这个可是玩出很多花样的。

 

比如说可以通过List存储一些列表型的数据结构,类似于粉丝列表、文章的评论列表之类的东西。

 

比如说可以通过irange命令,读取某个闭区间里面的元素,可以基于List实现分页查询,基于Redis实现简单的高性能分页,可以做类似于微博那种下拉就不断分页的功能,性能高,就一页一页的走。

 

比如说可以搞个简单的消息队列,从List头部怼进去,从List屁股那里拿出来。

 

消息队列:Redis的链表结构,可以轻松的实现阻塞队列,可以使用左进右出的命令组来完成队列的设计。

 

Set:

Set是无序集合,会自动去重的那种。

直接基于Set把系统里需要去重的数据扔进去,自动就给去重了,如果你要对一些数据进行快速全局的去重,当然也可以基于JVM内存里的HashSet进行去重,但是如果你的系统部署在多台机器上呢?就得基于Redis进行全局的Set去重。

 

可以基于Set玩  交集、并集、差集,比如说可以把两个人的好友列表整出来,看下两人共同好友是谁。

 

SortedSet:

 

SortedSet是排序的Set,去重并且可以排序,写入的时候给一个分数,自动根据分数排序。

 

有序集合的使用场景与集合类似,但是set集合不是自动有序的,而sorted Set可以根据分数进行成员间的排序,而且是插入时就排序好。所以当你需要一个有序且不重复的集合列表是就可以选择sorted Set数据结构作为选择方案。

posted on 2019-12-20 10:34  心向天空❤  阅读(296)  评论(0编辑  收藏  举报

导航