三.列表类型
Redis里的列表类型可以存储一个有序的字符串列表,其内部使用双向链表实现,故向列表两端添加元素的时间复杂度为1,获取越接近两端的元素速度就越快。
操作命令:
1.向列表中添加元素,如果列表不存在则自动创建
LPUSH keyname value ...//向列表左边添加一个或多个元素,返回增加后列表的长度
RPUSH keyname value ...//向列表右边添加一个或多个元素,返回增加后列表的长度
2.从列表中弹出第一个元素
LPOP keyname//从列表左边弹出
RPOP keyname//从列表右边弹出
3.获取列表中元素的个数
LLEN keyname
4.获取列表片段
LRANGE keyname start stop// 0 2 代表开始3个, -3 -1代表末尾三个
5.删除列表中前count个值为value的元素,返回实际删除元素的个数
LREM keyname count value//count>0时,从左边开始
//count<0时,从右边开始
//count==0时,删除所有的
6.返回指定索引的元素
LINDEX keyname index
7.更改指定索引处的值
LIST keyname index value
8.删除指定索引范围之外的所有元素
LTRIM keyname start end
9.插入元素操作
LINSERT keyname BEFORE pivot value//这条命令首先会在列表中从左到右查找值为pivot的元素,然后将value插入它的前面
LINSERT keyname AFTER pivot value//这条命令首先会在列表中从左到右查找值为pivot的元素,然后将value插入它的后面
10.数据转移
RPOPLPUSH source destination//命令会从键source列表的右边弹出第一个元素然后加入到destination的左边返回这个元素的值
四.集合类型
集合(Set)用于存储不重复的数,它常用的操作是向集合中加入或删除元素,判断某个元素是否存在等,由于集合类型在Redis内部是使用值为空的散列集实现的,所以这些操作的时间复杂度为1,最方便的是多个集合之间还可以进行并集,交集和差集运算。
1.向集中添加一个或多个值
SADD keyname vlaue1 value2 ...
2.从集中删除一个或多个元素
AREM keyname value1 vlaue2 ...
3.获取集合中的所有元素
SMEMBERS keyname
4.判断元素是否存在集合中
SISMEMBER key value
5.集合间进行集运算
SDIFF keyname1 keyname2 ...//差集运算:返回keyname1-keyname2-...后的集合
SINTER keyname1 keyname2...//交集运算
SUNION keyname1 keyname2...//并集运算
6.返回集中元素个数
SCARD key
7.将集运算后的结果存入新集中
SDIFFSTORE newkey keyname1 keyname2 ...//将keyname1 ,keyname2...等结果的差集存入newkey中
SUNIONSTORE newkey keyname1 keyname2 ...//并集
SINTERSTORE newkey keyname1 keyname2 ...//交集
8.随机获取count个元素
SRANDMEMBER keyname count
9.从集合中随机弹出一个元素
SPOP key
五.有序集合类型
有序集合类型是在集合类型的基础上为每个元素都关联了一个分数,这使得我们不仅可以完成插入,删除和判断元素是否存在等集合类型支持的操作,还能够进行有序的一些操作。
有序集合类型和列表类型对比:
1.二者都是有序的
2.二者都可以获得某一范围的元素
3.列表类型通过链表实现,获取接近两端的数据速度极快,访问中间位置数据速度相对慢一点。
有序集合类型是使用散列表和跳跃表实现的,即使读取位于中间部分的数据速度也很快(logN)
4.列表中不能简单地调整某个元素的位置,但是有序集合可以。
5.有序集合比列表更耗费内存。
操作命令:
1.向有序集合中加入一个或多个键值对
ZADD key score1 member1 score2 member2...
2.获取指定元素的分数
ZSCORE key member
3.依据分数从小到大返回指定闭区间索引的元素
ZRANGE key start stop
4.依据分数从大到小返回指定闭区间索引的元素
ZREVRANGE key start stop
5.获取指定分数范围的指定个数的元素
ZRANGEBYSCORE key min max LIMIT offset count
6.增加某个元素对应的分数
ZINCRBY key increment member //member对应的分数加increment ,返回加后的分数
7.获取集合中元素的数量
ZCARD key
8.返回指定分数范围内的元素个数
ZCOUNT key min max
9.删除一个或多个元素
ZREN key memeber ...
10.按照排名范围内删除元素
ZREMRANGEBYRANK key start stop//删除在指定范围内的所有元素,返回删除的元素数量
12.按照分数范围删除
ZREMRANGEBYSCORE key min max
13.获取元素排名
ZRANK key member//从小到大
ZREVRANK key member//从大到小