07Redis列表(List)+集合(Set)

列表List

单值多value

lpush/rpush/lrange

lpush list01 1 2 3 4 5 :可以理解为从左到右依次入栈

lrange list01 0 -1:可以理解为将list01 所有依次出栈,那么你会得到 5 4 3 2 1

rpush list02 1 2 3 4 5 :可以理解为从右到左依次入栈

lrange list02 0 -1:可以理解为将list02所有依次出栈,那么会得到1 2 3 4 5


lpop/rpop

lrange list01 0 -1 :你会得到 5 4 3 2 1

lpop list01:从栈顶出元素。得到5

rpop list01:从栈底出元素。得到1

注意弹出栈过后,list里面就没有这些元素了。


lindex:按照索引下标获得元素(从上到下)

lrange list01 0 -1:4 3 2

lrange list02 0 -1:2 3 4

lindex list01 3 :你会得到nil

lindex list02 2:你会得到4


llen:得到当前list的长度

llen list01 :得到3


lrem key 删key个value

rpush list03 1 1 1 2 2 2 3 3 3 4 4 4 5 6 7

lrem list03 2 3:删除这个list03中的两个三

lrange list03 0 -1:1 1 1 2 2 2 3 4 4 4 5 6 7

ltrim key 开始index 结束index,截取指定范围的值后再赋值给key

del list01 :删除这个List

lpush list01 1 2 3 4 5 6 7 8

ltrim list01 0 4:将list01中的下标0到4的元素截取出来并且赋值给list01

lrange list01 0 -1: 8 7 6 5 4


rpoplpush 源列表 目的列表:将源列表从底出栈一位给目的列表的头部

lrange list01 0 -1:8 7 6 5 4

lrange list02 0 -1:2 3 4

rpoplpush list01 list02:将list01的最底元素出栈给list02进行压栈

lrange list02 0 -1:4 2 3 4


lset key index value:给list中具体某个下标设值

lrange list01 0 -1:8 7 6 5

lset list01 1 x:给list01的下标为1的元素设值为x

lrange list01 0 -1:8 x 6 5


linsert key before/after 值1 值2:在key列表中的值1的前面或者后面插入一个值2

lrange list01 0 -1:8 x 6 5

linsert list01 before x java

lrange list01 0 -1:8 java x 6 5

linsert list01 after x oracle

lrange list01 0 -1:8 java x oracle 6 5


性能总结:

它是一个字符串链表,left、right都可以插入添加;

如果键不存在,常见新的链表

如果键已存在,新增内容

如果值全移除,对应的键也就消失二两

链表的操作无论是头和尾效率都极高,但假如是对中间元素进行操作,效率就很惨淡了。


集合(Set)


sadd/smembers/sismember

sadd set01 1 1 2 2 3 3 :将只会塞入1 2 3

smembers set01 0 -1:1 2 3 呈现Set中的所有元素

sismember set01 1:判断这个Set中有没有1


scard:获取集合里面的元素个数

scard set01 :3 获取set01中的元素个数、


srem key value:删除集合中元素

srem set01 3

smembers set01 :1 2


srandmember key 某个整数(随机出几个数)

红包获得者随机出现…


spop key 随机出栈

sadd set01 1 2 3 4 5 6 7 8

smembers set01 : 1 2 3 4 5 6 7 8

spop set01:将会随机得到其中给的一个元素


smove key1 key2 value: 作用是将key1里的value赋给key2

sadd set02 x y z

smove set01 set02 5:将set01中的5赋给set02


数学集合类

del set01 删除set01

del set02 删除set02

sadd set01 1 2 3 4 5

sadd set02 1 2 3 a b


差集:sdiff

sdiff set01 set02 :得到set01减去set02的差集 4 5


交集:sinter

sinter set01 set02:得到两个set的交集:1 2 3


并集:sunion

sunion set01 set02:得到两个set的并集:1 2 3 4 5 a b

你可能感兴趣的:(Redis)