一、Redis 命令操作
1.String
1.赋值 (set <key> value)
2.取值 (get <key>)
3.取当前key值并且更改key的value (getset <key> value)
4.数字递增 (incr <key>)
5.数字递减 (decr <key>)
6.递增指定数 (incrby <key> num)
7.递减指定数 (decrby <key> num)
8.指定该key在Redis中存活时间 (setex <key> seconds value)
9.key存在,无操作,key不存在,执行set (setnx <key> value)
10.向尾部追加 (append <key> value)
11.获取字符串长度 (strlen <key>)
12.设置多个键值 (mset <key> value [key value...])
13.获取多个键值 (mget <key> [key...])
14.批处理setnx(注意回滚) (msetnx <key> value [key value ...])
2.List
向列表左边添加元素 (lpush <key> value [value])
向列表右边添加元素 (rpush <key> value [value])
查看当前列表元素 (lrange <key> start stop)
给存在的key左边添加元素,key不存在则无操作 (lpushx <key> value)
给存在的key右边添加元素,key不存在则无操作 (rpushx <key> value)
从列表左边弹出元素 (lpop <key>)
从列表右边弹出元素 (rpop <key>)
获取列表中元素个数 (llen <key>)
删除列表指定元素 (lrem <key> count value)
注:在指定Key关联的链表中,删除前count个值等于value的元素。
如果count大于0,从头向尾遍历并删除,如果count小于0,则从尾向头遍历并删除。
如果count等于0,则删除链表中所有等于value的元素。如果指定的Key不存在,则直接返回0。
指定元素的索引值 (lset <key> index value)
保留指定片段 (ltrim <key> key start stop)
向列表中插入元素 (linsert key befter|after pivot value)
将元素从一个列表转移到另一个列表 (rpoplpush source destination)
3.Hash
field (域) increment (增加)
赋值: (hset <key> field value)
hset key f1 "1"
取值: (hget <key> field)
hget key f1
判断字段是否存在: (hexists <key> field)
获取字段数量: (hlen <key>)
删除字段: (hdel <key> field [field])
当前字段不存在时赋值: (hsetnx <key> field value)
增加指定字段的数值: (hincrby <key> field increment)
获取key中所有字段和值: (hgetall <key>)
只获取字段名: (hkeys <key>)
设置多个字段的值: (hmset <key> field value [field value...])
获取多个字段的值: (hmget <key> field [field...])
4.Set
member (成员) destination (目的点)
增加元素: (sadd <key> member [member...])
查看当前key中所有元素: (smembers <key>)
获取当前key中元素个数: (scard <key>)
判断元素是否在集合中: (sismember <key> menber)
随机从集合中弹出一个元素: (spop <key>)
随机获得集合中的元素: (srandmember <key> [count])
删除指定元素: (srem <key> member [member...])
将元素从一个集合转到另一个集合: (smove source destination member)
smove set set1 0 (将0这个元素从set中移到set1中)
集合间差集运算: (sdiff <key> [key...])
集合间交集运算: (sinter <key> [key...])
集合间差集运算(集合另存): (sdiffstore destination <key> [key...])
sdiffstore set set0 set1 (将set0和set1的差集存入set中)
集合间交集运算(集合另存): (sunionstore destination <key> [key...])
sunionstore set set0 set1 (将set0和set1的交集存入set中)
5.Zset
增加元素: (zadd <key> score member [score] [member]...)
获取某范围元素有序列表:(索引小到大) (zrange <key> start stop)
获取某范围内元素有序列表:(索引大到小) (zrevrange <key> start stop)
获取集合中元素个数: (zcard <key>)
获取指定分数(索引)范围内元素个数: (zcount <key> min max)
获取指定分数范围内元素:(分数从小大大) (zrangebyscore <key> min max)
获取指定分数范围内元素:(分数从大到小) (zrevrangebyscore <key> max min)
获得指定元素分数: (zscore <key> member)
增加某元素分数: (zincrby <key> increment member)
获取元素排名:(分数从小到大) (zrank <key> member)
获取元素排名:(分数从大到小) (zrevrank <key> member)
删除一个或多个元素: (zrem <key> member [member...])
按照排名范围删除元素: (zremrangebyrank <key> start stop)
按照分数范围删除元素: (zremrangebyscore <key> start stop)
二、Redis事务
multi 开启事务
watch 监视事务(监视的对象被改变,事务回滚)
exec 执行事务
discard 取消事务
主从
slaveof 172.18.84.63 6379 成为172.18.81.63的从机
info replication 查看当前状态
slaveof no one 取消所有主从
--sentinel 开启哨兵监视
-
缓存穿透(请求了一个数据库和缓存不存在的数据)
(数据造假,存在时间较短)
(网关限制) -
缓存击穿(缓存消失后,大量请求涌入)
(持久层加上线程锁) -
缓存雪崩(大量缓存击穿)
(分布式、错峰)