List

Redis的List是通过Linked List(链表)来实现的String集合,所以插入数据的速度很快。

但是缺点就是在数据量比较大的时候,访问某个数据的时间可能会很长,但针对这种情况,可以使用Sorted Set,这个一会再说。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

LPUSH,RPUSH,LRANGE

LPUSH会向List的左侧(头部)添加一个新的元素,而RPUSH会把新的元素添加到List的右侧(尾部)。

LRANGE命令可以按索引区间显示List的一部分,它的个试试LRANGE List-Key start end。如果想显示整个list的话,这两个索引就可以是0和-1,其中-1就表示最后一个元素。
Redis实战 - 2.list和set 随笔 第1张

注意:这里插入多个数,因为是链表,所以向左插入。

LPOP,RPOP

POP动作有两个效果:一个是获取到元素,另一个是把元素从list中删除。

LPOP就是从左边(头部)POP,RPOP就是从右边(尾部)POP。
Redis实战 - 2.list和set 随笔 第2张

LTRIM

LTRIM命令可以对list进行剪切,其格式为LTRIM list-key start end,返回的就是剪切的部分:
Redis实战 - 2.list和set 随笔 第3张

BRPOP,BLPOP

BRPOPBLPOP这两个命令与RPOP和LPOP类似,但是当list里没有元素的时候,它们可以几秒钟,如果这期间有新的元素添加到了list里,那么就会停止等待返回该元素,否则就会一直等到设定的时间结束,然后返回null:
Redis实战 - 2.list和set 随笔 第4张

此外您还应该研究一下RPOPLPUSHBRPOPLPUSH这两个命令。

SET

Redis的SET是无序的String集合,它里面的元素是不会重复的。

SADD

可以看到一次性可以添加一个或多个元素。

SMEMBERS

SMEMBERS可以获取set里所有的元素:
Redis实战 - 2.list和set 随笔 第5张

SISMEMBER

SISMEMBER可以判断某个元素是否在set里:
Redis实战 - 2.list和set 随笔 第6张
返回1表示true,0表示false。

SINTER

SINTER可以查看多个set之间的交集:
Redis实战 - 2.list和set 随笔 第7张

SPOP

SPOP可以随机从set中移除一个或多个元素并返回:
Redis实战 - 2.list和set 随笔 第8张

SUNION

SUNION key1 [key2] 

返回所有给定集合的并集
Redis实战 - 2.list和set 随笔 第9张

SUNIONSTORE

并集:把多个set合并到一个set里可以使用SUNIONSTORE,格式是sunionstore 目标set set1 set2 ...:
Redis实战 - 2.list和set 随笔 第10张

复制

如果只有一个set需要合并的话,那么就相当于是复制
Redis实战 - 2.list和set 随笔 第11张

SCARD

SCARD可以获取set的大小:
Redis实战 - 2.list和set 随笔 第12张

SRANDMEMBER

SRANDMEMBER可以随机获取set里面的元素,但是不会移除它们:
Redis实战 - 2.list和set 随笔 第13张

Sorted SET

Sorted Set有点像Set和Hash的结合体。

和Set一样,它里面的元素是唯一的,类型是String,所以它可以理解为就是一个Set。

但是Set里面的元素是无序的,而Sorted Set里面的元素都带有一个浮点值,叫做分数(score),所以这一点和Hash有点像,因为每个元素都映射到了一个值。

Sorted Set是有序的,规则如下:

  • 如果A.score > B.score,那么A > B。
  • 如果A.score == B.score,那么A和B的大小就通过比较字符串来决定了,而A和B的字符串是不会相等的,因为Sorted Set里面的值都是唯一的。

ZADD

ZADD可以添加元素到Sorted Set,就和Set的SADD命令差不多:
Redis实战 - 2.list和set 随笔 第14张
可以看到ZADD的格式是:zadd key score element。

ZRANGE,ZREVRANGE

ZRANGE默认按分数由低到高把Sorted Set的元素显示出来:
ZREVRANGE 从高到低:
Redis实战 - 2.list和set 随笔 第15张
也可以一同把分数显示出来,使用参数WITHSCORES:
Redis实战 - 2.list和set 随笔 第16张

ZRANGEBYSCORE

ZRANGEBYSCORE可以按范围显示Sorted Set,格式是zrangebyscore key 分数下限 分数上限:
Redis实战 - 2.list和set 随笔 第17张

ZREMRANGEBYSCORE

ZREMRANGEBYSCORE可以按范围移除元素:
Redis实战 - 2.list和set 随笔 第18张
该命令返回的是移除元素的个数。

其中-infinf分别表示负无穷和正无穷。

ZRANK

ZRANK命令可以获得元素的排名:
Redis实战 - 2.list和set 随笔 第19张
排名从0开始。

ZREVRANK

ZREVRANK这个正好和ZRANK相反,就不说了。

词典分数(分数相同)

Sorted Set里分数相同的元素是按照词典分数(可以理解为比较字符串)进行排序的。
Redis实战 - 2.list和set 随笔 第20张

ZRANGEBYLEX

ZRANGEBYLEX可以按词典范围展示Sorted Set:
Redis实战 - 2.list和set 随笔 第21张

参考:

草根专栏,Redis in .NET Core 入门:(4) LIST和SET
草根专栏,Redis in .NET Core 入门:(5) Sorted SET
杨旭(Video),Redis in ASP.NET Core 3. List, Set, Sorted Set

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄