redis 中的 列表 lists、集合sets、散列hashes、有序集合sortedsets

Lists 列表

L 开头的命令,从左开始  ; R 开头的命令 ,从右边开始;B开头的命令,阻塞的。

redis 中的索引有两种,正向和反向。正向即从0到(n-1),反向则从 -1 到-n。

lpush

lpush k1 a b c d e f g  ,使用lrange查询下,发现,存储的顺序和我们插入的是相反的。所以lpush 是往左添加,添加a后,添加b 时是添加在a的左边了,即前面。

栈:同向命令,队列:反向命令。

lrange

lrange key start end : 查询某个key 起始索引到end索引的值。 

redis 中的 列表 lists、集合sets、散列hashes、有序集合sortedsets

lindex

获取某个key指定索引的value

redis 中的 列表 lists、集合sets、散列hashes、有序集合sortedsets

 

要想按照添加的顺序存储怎么办呢?

rpush

使用 rpush ,往右边放

redis 中的 列表 lists、集合sets、散列hashes、有序集合sortedsets

 

lset

设置指定位置的值,索引从0开始。类似数组

redis 中的 列表 lists、集合sets、散列hashes、有序集合sortedsets

lrem

从左边开始移除,移除指定字符。

lrem k2 3 b : 从左边开始移除,移除k2中的 b,总共移除3个。

lrem k2 -3 b : 从右边开始移除,移除k2中的 b,总共移除3个。

redis 中的 列表 lists、集合sets、散列hashes、有序集合sortedsetsredis 中的 列表 lists、集合sets、散列hashes、有序集合sortedsets

 

linsert  

linsert k2 after b 1111 : 在k2的 b 后面插入 1111

linsert k2 before b 1111 : 在k2的 b 前面插入 1111

redis 中的 列表 lists、集合sets、散列hashes、有序集合sortedsets

 

blpop

blpop k2 5 : 移除某个key,没有的时候进行阻塞,阻塞 5s

blpop k2 0 : 移除某个key,没有的时候进行阻塞,0代表一直阻塞

redis 中的 列表 lists、集合sets、散列hashes、有序集合sortedsets

 

ltrim

ltrim k1 0 -1  发现没有删除掉。使用 ltrim k1 2 -2 。删掉了三个。 ltrim ,删除指定索引外的值。 0到-1,即所有的,所以不会删除。  2 -2 , 2的前面有 0 1,-2的前面有 -1,所以删除了3个。

redis 中的 列表 lists、集合sets、散列hashes、有序集合sortedsetsredis 中的 列表 lists、集合sets、散列hashes、有序集合sortedsets

 

hashes 散列

hset

hset hkey key value : 添加一个map名,put 一个key 和value

hmset

hmset k1 age 20 sex man : 添加一个map名,put多个key value

redis 中的 列表 lists、集合sets、散列hashes、有序集合sortedsets

hmget

hmget mapKey field1 field2: 取出 mapkey中的field1  field2的值

hkeys

hkeys mapkey 查询mapkey的所有field

hvals

hvals mapkey 查询mapkey的所有values

hgetall

hgetall mapkey 查询mapkey的所有field、value

hincrbyfloat    float型操作

hincrbyfloat key age 0.5: 对key 中的 age字段增加 0.5 

hincrbyfloat key age -1: 对key 中的 age字段增减 1 

 

hash : 可以对field进行数值计算,例如点赞、收藏、商品详情页

 

sets 集合  无序、去重

sadd

sadd k1 one two one three four two  : 添加多个值

smembers

smembers k1  查询k1中的数据

srem

srem k1 two one : 删除k1中的 two one

 

集合操作

sinter

sinter k1 k2 返回k1 和k2的交集

sinterstore

sinterstore k4 k1 k2 : 把 k1 和 k2 的交集存到 k4 中

sunion

sunion k1 k2 : 返回 k1 k2的并集

sunion k4 k1 k2 : 把 k1 和 k2 的并集存到 k4 中

sdiff

sdiff k1 k2 : 返回 k2 中没有的k1值。

sdiff k2 k1 : 返回 k1 中没有的k2值。

redis 中的 列表 lists、集合sets、散列hashes、有序集合sortedsets

 

随机事件

整数:取出一个去去重的结果集(不能超过已有集)

负数:取出一个带重复的结果集,一定满足需要的数量。

如果为0,不反回。

场景:

抽奖:中奖名额,中奖可以重复还是不重复。

srandmember

srandmember k1 3 :从k1 中随机返回 3 个。k1 大于 3 返回 3个,小于3 ,返回全部。

srandmember k1 -3 :从k1 中随机返回 3 个。k1 大于 3 返回 3个,小于3 ,返回3个。

spop

spop k1 : 随机取出1个,并且删除掉

 

sorted sets有序集合

help @sorted_set

sorted_set 中 有元素、分值、索引。

物理内存左小右大

zadd k1 8 apple 5 orange 6 banana : 添加 apple 给8分、orange 给 0、banana 6分。 

zrange  查询

zrange k1 0 -1

 zrange k1 0 -1 withscores

redis 中的 列表 lists、集合sets、散列hashes、有序集合sortedsetsredis 中的 列表 lists、集合sets、散列hashes、有序集合sortedsets

zrangebyscore

zrangebyscore k1 6 9 : 取出分值》=6、《=9的数据

zrevrange

zrevrange k1 0 1 :反向取出排序 0 到 1的元素。相当于 zrange k1 -2 -1

redis 中的 列表 lists、集合sets、散列hashes、有序集合sortedsets

zscore

zscore k1 apple 查询apple的分值

zrank

zrank k1 apple 查询rank的排名

zincrby

zincrby k1 2.5 banana : 修改banana的分值加2.5。 对应的物理排序存储也会变化

 

sorted_set 场景:排行榜

 

zunionstore

zunionstore unkey 2 k1 k2 : 默认sum 到unkey里面,总共有2个集合,分别是 k1 k2

zunionstore unkey1 2 k1 k2 weights 1 0.5 : 默认做sum, weights  指定权重, 第一个权重为1,第二个权重为0.5

redis 中的 列表 lists、集合sets、散列hashes、有序集合sortedsetsredis 中的 列表 lists、集合sets、散列hashes、有序集合sortedsets

 

zunionstore unkey 2 k1 k2 aggregate min

aggregate 参数,有sum、min、max ,求指定set相同元素的和,取相同的最小的值,取相同元素最大的值。

redis 中的 列表 lists、集合sets、散列hashes、有序集合sortedsets

 

排序是怎么实现的,增删改查的速度

skip list:跳跃表(跳表)

redis 中的 列表 lists、集合sets、散列hashes、有序集合sortedsets