Redis 学习相关命令
目录 (Table of Contents)
[TOCM]
string
Max:key 1024 字节、val 512 兆
命令 | 键 | 值 | 释义 |
---|---|---|---|
set | key | val | |
getset | key | val | 先获取再设置值 |
del | key | ||
incr | key | 不存在k 会先创建k 再默认0递增1为 1 | |
decr | key | 不存在k 会先创建k 再默认0递减1为 -1 | |
incrby | key | val | 在k的v基础上增加v |
decrby | key | val | 在k的v基础上减少v |
append | key | val | 在k的v后面追加一个v 返回v的长度 |
hash
Max:每个hash可以存储 4294967295 个键值对
命令 | 键 | 域 | 值 | 释义 |
---|---|---|---|---|
hset | key | k | v | |
hmset | key | k | v .. v | 设置多个属性值 |
hmget | key | k .. k | 获取多个属性值 | |
hgetall | key | 全部获取到 | ||
hdel | key | k | v | 删除单个属性值 |
del | key | 可以删除整个集合 | ||
hincrby | key | k | v | 给key在k基础递增v |
hexists | key | k | 检测是否存在属性值 1/0 | |
hlen | key | 长度 | ||
hkeys | key | 返回key以下所有的 k | ||
hvals | key | 返回key以下所有的 v |
list
tips:由于业务场景中在出现业务高峰的时候运用队列处理时 弹出的元素没有处理成功 这样就造成了弹出元素的业务丢失 为此为了解决该类问题 可以用 rpoplpush 来解决这个问题(举例:listA 为主业务队列, listB 为副业务队列 当listA被消费者弹出一个元素时 随即将元素添加到listB队列 等待业务处理完成时 即可将listB的元素删除 相当于做了一个备份的操作)
命令 | 键 | 值 | 值 | 值 | 释义 |
---|---|---|---|---|---|
lpush | key | v | ... | ... | 从左添加 |
lpushx | key | v | 从左头部插入一个元素 如果key不存在则插入失败(类似插队) | ||
lpop | key | 从左弹出 | |||
rpush | key | v | ... | ... | 从右添加 |
rpushx | key | v | 从右头部插入一个元素 如果key不存在则插入失败(类似插队) | ||
rpop | key | 从右弹出 | |||
lrange | key | start(0) | end | (-1最后一个、-2倒数第二个...) 查看列表范围 | |
llen | key | 查看元素个数 | |||
lrem | key | count | v | 依次移除 count 个 v | |
lrem | key | -count | v | 依次移除 count 个 v | |
lrem | key | 0 | v | 依次移除 所有的 v | |
lset | key | count | v | 第count(角标)个位置插入v(插队) | |
linsert | key | before | vv | v | 依次且只在的第一个vv之前插入v (插队) |
linsert | key | after | vv | v | 依次且只在的第一个vv之后插入v (插队) |
rpoplpush | key1 | key2 | 依次将 key1 右边的第一个弹出 然后将弹出的元素插入到 key2 的左边 |
set
set可包含的最大元素数量是 4294967295 可以看做没有排序的集合 和 list 一样(set中不允许出现重复的元素 如果多次出现 只会保留一份内容) 应用场景例如两件商品同时购买过的用户有哪些 网站访问的ip有多少个...
命令 | 键 | 值 | 值 | 释义 |
---|---|---|---|---|
sadd | key | v | v ... v | 添加元素 |
srem | key | v | v ... v | 删除元素 |
smembers | key | 查看元素 | ||
sismember | key | v | 查看 v 是否存在 (1/0) | |
sdiff | key1 | key2 | 返回 key1 与 key2 的差集 | |
sinter | key1 | key2 | 返回 key1 与 key2 的交集 | |
sunion | key1 | key2 | 返回 key1 与 key2 的并集(重复的会去掉) | |
scard | key | 返回 key 下的数量 | ||
srandmember | key | 返回 key 中随机的一个元素 | ||
sdiffstore | key1 | key2 | key3 | 将 key2 与 key3 的差集存储到 key1 |
sinterstore | key1 | key2 | key3 | 将 key2 与 key3 的交集存储到 key1 |
sunionstore | key1 | key2 | key3 | 将 key2 与 key3 的并集存储到 key1 |
sorted-set
sorted-set 与 set 之间的区别:都会有一个分数与之关联 redis正是通过这个分数为集合从小到大的排序 虽然值是唯一的 但是分数是可以重复的 主要的应用场景在于游戏的排名、微博的热点话题、游戏的积分... ...
命令 | 键 | 值 | 值 | 值 | 释义 |
---|---|---|---|---|---|
zadd | key | num | v | num ... v ... | 给key键添加 num分数 到v(可以是多个 如果num重复 成功返回0 会修改为本次的num) |
zscore | key | v | 返回key下 v 的分数 | ||
zcard | key | 返回key下的长度 | |||
zrem | key | v | v ... v | 删除key下的v | |
zrange | key | 0 | -1 | 返回key下第一个到最后一个的v | |
zrange | key | 0 | -1 | withscores | 返回key下第一个到最后一个的v与v对应的分数 |
zrevrange | key | 0 | -1 | withscores | 以分数从大到小返回key的v 与 v对应的分数 |
zremrangebyrank | key | start | end | 以分数从大到小 有序的 从 start 到 end 之间删除 | |
zremrangebyscore | key | startnum | endnum | 删除key下分数 从 startnum 到 endnum 之间的 v | |
zrangebyscore | key | startnum | endnum | limit start end | 以分数从大到小 返回startnum 到 endnum 分数区间 的第 start 到 end结束 |
zincrby | key | num | v | 给 key 的 v 在 v 的基础上增加 num | |
zcount | key | startnum | endnum | 返回 key 下分数在 startnum 到 endnum 之间的个数 |