set age 23 ex 10 : ex 持续时间 10秒

ttl age : 表示查看age的剩余时间

setnx : 已存在key则不插入,无则插入 例子:setnx name cys

mset:批量插入,例子:mset name cys age 23 sex boy birthday 198904120018

mget :查询 例子:mget birthday 结果 198904120018

incr num :创建一个值为1,key为num的数据,每执行一次就加1
decr num2: 创建一个值为-1,key为num2的数据,每执行一次就减1

incrby num3 3: 创建一个值为3,key为num3的数据,每执行一次就加3
decrby num4 4: 创建一个值为-4,key为num4的数据,每执行一次就减4

incrbyfloat score 1.1 : 创建一个值为1.1,key为score的数据,每执行一次就减1.1

append:后面追加拼接 例子,set string cys,然后append string nameis ,结果是cysnameis

哈希
hmset:例子 hmset user name cys age 31 存入键名为user,name=cys age=31
hmget: hmset user name ,结果 cys

==================================================
list 列表

lrange keyname 0 -1 : 0表示从第一个开始,-1表示到最后一个

redis笔记_第1张图片
redis笔记_第2张图片
redis笔记_第3张图片

一共有16个数据 通过select 0, select15切换
flushall 清空所有数据
flushdb 清空当前数据库

=====================================
集合
sadd user age name sex : 向user集合里面添加元素 age,name,sex
smembers user 查看user集合里面的元素

sinter user user2 查看两个集合的元素交集

有序集合
zadd count 13 c1 14 c2 16 c3 9 c4  向count集合里面添加元素和元素的值

zrange count 0 -1 withscores  按顺序给元素排序
===================
 exists count  :查询键 count是否存在 返回 0或者1

 type count :查询键 count是什么类型 

 expire count 5 : 使键 count 5秒后删除

 del count : 删除count

 dbsize 查询键的数量

============================
订单场景,管理某个user的订单

各个订单的信息可以分别 hmset进一条条数据,然后lpush进这个用户,
新来的订单,重新hmset成一条数据,再把key lpush进刚刚的列队

hmset order1 money 1 time 2020331
hmset order2 money 12 time 2020221
hmset order3 money 8 time 2020116
hmset order4 money 5 time 2020123

lpush user order1 order2 order3 order4
类似这种操作就能管理起来

===========
缓存血崩
比如大量并发请求同时访问redis里面一个不存在的key,redis里面没有就会去mysql查询,而mysql连接池并发数有限,就会血崩
处理思路:只让一个用户访问,其他的排队,这个用户访问进redis,发现没有,去走mysql,mysql查到之后,把数据扔进redis,让后面的用户可以访问

============
缓存穿透
大量【无效】的请求(比如查询orderid)去查询redis,redis也没有就会去mysql查询,这样会对mysql造成不必要的压力
解决方案,加一个布隆过滤器
把数据库的数据(数据库的所有orderid)同步到过滤器,每次请求mysql之前,先到过滤器看看是否有该orderid,有的话查具体信息,没有则返回