在工作中一直都使用redis。下面我来说说我对redis的理解,经验不足,希望大家不要嫌弃。(So:可能会更新,先写这么多)
1:除了列表(List)类型,其余的数据类型会存在有相同的值插入时,新值覆盖旧值。(哈希(Hash)的是字段相同)
2:列表(List)类型的数据特点是可以先进先出/先进后出。两边都可以操作。这个特性,我在工作中一般都是使用的sql队列,或者消息队列等。
3:字符串(String)类型的数据特点是任何的字符串都可以存储,存储的空间比较大,缺点是存储的数据是一个key对应一个value.这就要求key必须是事先知道的。后面才能取。还有就是浪费key的数量。所以最好用户信息,商品信息这种一个类型多个值的就不要存储在字符串(string)中了。所以针对这个特性,可以将一些数据的自增标识什么的放在此类型里。
4:哈希(Hash)类型的数据特点是一个key值可以存放多个不同的标识对应不同的数据。这种的我一般就放用户数据,商品信息,活动数据之类的。
5:集合(Set)类型的数据特点是能够快速的将两个集合(Set)里面相同的字符数据给去重,或者单获得重复/不重复的数据。针对这种的数据类型,我一般是用于查询用户订阅/未订阅/可订阅的场景。
6:有序集合(Sorted Set)类型的数据特点是存储的数据都是不可重复的,但每个数据都关联了一个数字(只能存储正整数),这个数字是可以重复的(当数据重复后,新的数字会覆盖旧的数字)。我们可以根据这个数字做文章,可以取一段数字内的数据,或者大于/小于/等于这个数字的。针对这种的数据,我一般是存储文章信息(数字为文章时间)、用户等级(数字为积分的等级)等等。(So:我在工作中使用的这种数据类型比其他的要多。我感觉比其他的数据类型更常用)。
7:不同的数据类型之间不能操作,一个key只能设置一个数据类型,当已经设置为某个key为哈希(Hash)时,不能再将这个key再设置为其他的数据类型。
8:可以设置任何数据类型在一定时间内使key过期(自动删除)。可以给任意的key加锁,可以阻止一定量的并发。
9:可以分库,可实现如果数据是分库存放的,存储在redis的数据也可以分库存储操作。