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:跳跃表(跳表)