Redis

Redis 存储类型、事务基本操作、乐观锁、持久化、订阅发布、缓存穿透和雪崩。

Redis 存储类型

String、[SET,SETNX,SETEX,STRLEN,SETRANGE,GETRANGE]

List、[LPUSH,RPUSH,LPOP,RPOP]

Set、[SADD,SPOP,]

Hash、[HSET,HGET,HKEYS,HVALS]

Zset、[ZADD,ZSCORE(判断key是否存在),ZINCRBY,]

Geospatial、[GEOADD,GEOPOS,GEODIST]

Hyperloglog、[PFADD,PFCOUNT,PFMERGE]

Bitmap、[SETBIT,GETBIT,BITPOS,BITOP]

事务基本操作

开启事务[multi]

命令入队

执行事务[exec]

放弃事务[discard]

redis事务不保证原子性,语法错误会失败,运行错误不会失败。

乐观锁

[watch]监视器实现乐观锁

持久化、指定时间里,讲内存中的数据集体写入磁盘,创建快照。fork一个子进程来实现。 默认RDB 一般不修改,缺点就是最后一次肯能丢失。比AOF更加高效

 RDB
  save 900 1 #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。
  save 300 10 #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照。
  save 60 10000 #在60秒(1分钟)之后,如果至少有10000个key发生变化,则dump内存快照。
 AOF
  appendfsync always #每次有数据修改发生时都会写入AOF文件。
  appendfsync everysec #每秒钟同步一次,该策略为AOF的缺省策略。
  appendfsync no #从不同步。高效但是数据不会被持久化。

订阅发布

[psubscribe] 订阅一个或多个给定模式的频道

[pubsub] subcommand 查看订阅与发布状态

[publish] channel message 讲信息发送到指定频道

[punsubscribe] 退订所有给定模式的频道

[subscribe] 订阅给定的一个或多个频道

[unsubscribe] 退订给定频道

[info] replication 查看redis状态

 

集群搭建、主从复制、哨兵模式、

1、单机版

 

2、主从复制

 

3、哨兵模式

 

4、

缓存穿透和雪崩

1、缓存穿透(读不到数据,一直读)

布隆过滤器。

redis中存入空的缓存。

2、缓存击穿(对某一个key数据 读取量高,缓存过期,空档期直接击穿底层数据库)

上层对于查询key的时候可以单线程查询。

热点数据不过期

 

Redis的分布式锁??

   分布式锁,setnx

  SET key value [EX seconds] [PX milliseconds] [NX|XX]

 

3、缓存雪崩 双十一:

停掉一些服务(保证主要服务可用),多增几台redis(异地多活)

限流降级

数据预热

 

Redis 过期策略及内存淘汰机制

过期策略

 过期策略:-> 定期删除+惰性删除

内存淘汰机制

volatile-lru: 从已设置过期时间的数据集( server.db[i].expires ) 中挑选最近最少使用的数据淘汰。

volatile-ttl: 从已设置过期时间的数据集( server.db[i].expires ) 中挑选将要过期的数据淘汰。

volatile-random: 从已设置过期时间的数据集( server.db[i].expires ) 中任意选择数据淘汰。

allkey-lru: 从数据集( server.db[i].dict ) 中挑选最近最少使用的数据淘汰。

allkey-ramdom: 从数据集( server.db[i].dict ) 中任意选择数据淘汰。

no-enviction(驱逐): 禁止驱逐数据。

 

原文地址:https://www.cnblogs.com/kutsu/p/13709538.html