Redis的简单介绍和常见用途

简单说架构

2019-06-17 13:46
关注

Redis是一种常用来做缓存的产品,今天,我们来简单认识一下Redis,了解一下它能存放哪些数据类型?可以用来做什么?

开始

Redis是一种常用来做缓存的产品,今天,我们来简单认识一下Redis,了解一下它能存放哪些数据类型?可以用来做什么?

redis

BSD协议

Redis是一款免费开源的产品,遵循BSD协议。BSD协议是五大开源协议的一种,它允许使用者在使用产品的基础上,可以对源代码进行修改和重新发布,并且可以发布为商业软件。需要注意的是,要在源代码中保留原来代码中的BSD协议,且不可以源代码的作者、机构或原产品名字做市场推广。

内存数据库

Redis是一个key-value型的数据库,也就是说,一个key对应一个value,这是保证高效的手段之一。另外,Redis的所有数据在使用时都存放在内存中。

什么意思?有两层含义。

1.单台Redis能存放多少数据,取决于其内存的大小(假设所有内存都给Redis用)。如果需要存放更多数据,可以增加内存或做集群。

2.Redis支持将数据持久化到磁盘中。但是,不会直接对磁盘进行读写。这种持久化,一般是用于在服务器重启时,先把数据持久化,重启后再从磁盘中读取到内存。

数据结构

Redis支持五种数据结构,分别是String,List,Hash,Set,Zset。即字符串,列表,哈希,集合,有序集合。

String是Redis最基本的类型,一个key对应一个value。一般情况下,大部分的内容都可以通过序列化后,再存在到Redis中,比如图片或对象等。每个key对就的value存储的内容最大为512M。

Hash即哈希表,即key-value对集合。是不是很奇怪?Redis的数据本身不就是key-value型的吗?其实不奇怪。我们这里在说数据结构的时候,单指的是key-value中的value。也就是说,value是一个key-value对集合。想象一下这种数据结构,特别适合存储对象。并且,Redis支持像数据库中update一样,单独修改对象的某个属性。

List即列表。value是一个字符串的列表。也就是说,一个value可以存放多个字符串,可以按照顺序,添加到头或尾。是不是有点像队列?没错,它就是一个双向链表。很适合做如朋友圈动态列表或消息队列等。

Set即集合。它的value和列表的value一样,也是一个字符串列表,只是Set是无序的,并且,value中的元素是不重复的。和Java中的Set差不多,它的基础原理也是基于Hash实现的,所以添加、删除、查找等的效率等都很快。Redis还为Set提供了多个集合操作的API,如交集、并集、差集等。可以利用来做统计,有多少个共同好友等。

Zset即有序集合。它在Set的基础上,给value中的每个字符串关联了一个score属性,即得分。Zset通过计算得分,将字符串进行从小到大的排序。字符串的得分可以相同。Zset的排序是在插入时直接就做好的。可以用来做排行榜等。

举报/反馈