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索引的值。 

lindex

获取某个key指定索引的value

 

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

rpush

使用 rpush ,往右边放

 

lset

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

lrem

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

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

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

 

linsert  

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

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

 

blpop

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

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

 

ltrim

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

 

hashes 散列

hset

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

hmset

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

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值。

 

随机事件

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

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

如果为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

zrangebyscore

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

zrevrange

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

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

 

zunionstore unkey 2 k1 k2 aggregate min

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

 

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

skip list:跳跃表(跳表)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值