开发必知Redis
2020-04-02 18:44:39   0  举报             
     
         
 AI智能生成
  开发必知Redis知识体系梳理,包含redis数据类型解析、高级功能应用、分布式方案、开发介绍等。
    作者其他创作
 大纲/内容
  高级功能
    
     发布订阅    
     定义    
     基于channel实现  
     使用    
     发布
  
     订阅  
     缺点    
     没有持久化,会丢消息
  
     事务    
     定义    
     解决多个命令的原子性问题  
     特点    
     按命令进入队列的顺序执行  
     不会受到其他客户端的请求的影响
  
     使用    
     开启事务:multi  
     执行事务:exec  
     取消事务:discard  
     监视:watch  
     问题    
     在执行exec前发生错误  
     在执行exec后发生错误  
     LUA脚本    
     定义    
     轻量级脚本语言,可以在Redis中执行  
     好处    
     一次发送多个命令,减少网络开销  
     Redis将整个脚本作为一个整体执行,保持原子性
  
     对于复杂的命令组合,可以放在文件中实现复用  
     使用    
     Redis中调用Lua脚本  
     Lua脚本中调用Redis命令  
     在Redis中调用Lua脚本文件  
     Lua脚本缓存  
     lua-time-limit 5000
  
     script kill
  
     场景
    
     ip限流  
     内存回收    
     回收触发    
     key过期  
     内存达到上限,触发内存淘汰  
     过期策略    
     惰性过期  
     定期过期  
     淘汰策略    
     LRU    
     volatile-lru
  
     allkeys-lru  
     问题
  
     LFU    
     volatile-lfu  
     allkeys-lfu  
     random    
     volatile-random  
     allkeys-random
  
     volatile-ttl  
     noeviction  
     持久化    
     RDB    
     自动触发    
     配置规则  
     shutdown  
     flushall  
     手动触发    
     save  
     bgsave  
     优势
  
     劣势  
     AOF    
     AOF 持久化策略  
     AOF重写机制  
     优势  
     劣势  
     分布式    
     主从复制
    
     过程    
     主从连接
  
     数据同步  
     命令传播  
     问题:单点故障  
     哨兵机制
    
     过程
    
     监控  
     通知  
     自动故障转移  
     问题    
     主从切换会丢失数据  
     无法水平扩容  
     分布式方案    
     客户端Sharding    
     Jedis  
     代理Proxy
    
     Twemproxy  
     Codis  
     服务端分片    
     分片策略    
     虚拟槽  
     一致性hash  
     RedisCluster    
     优势  
     不足
  
     开发应用    
     Java客户端    
     Jedis  
     Luttuce:SpringBoot2.0后默认客户端  
     Redisson:基于Redis提供了许多分布式方案
  
     数据一致性问题
    
     先更新数据库,再删除缓存    
     重试  
     异步更新  
     先删除缓存,再更新数据库    
     延时双删  
     高并发问题    
     热key发现    
     客户端统计  
     代理层统计  
     服务端统计  
     缓存雪崩    
     缓存不过期,主动更新  
     过期时间加随机数
  
     缓存定时预先更新  
     针对key失效后的落库加互斥锁或队列
  
     缓存穿透    
     缓存空数据或特殊字符串  
     布隆过滤器  
     SQL和NoSQL    
     SQL(泛指关系数据库)    
     特性
    
     Table形式、基于行存储
  
     固定的schema  
     表与表之间存在关联
  
     支持SQL操作和复杂关联查询  
     通过支持事务提供数据一致性  
     产品    
     Oracle\MySQL\SOLServer  
     劣势
    
     水平扩展需要复杂的技术  
     表结构修改困难
  
     基于磁盘的读写压力比较大  
     NoSQL(Not Only SQL)    
     特性    
     存储非结构化数据  
     表与表之间无关联,容易扩展
  
     保证数据的最终一致性  
     支持海量数据存储和高并发读写  
     支持分布式,对数据分片、扩缩容简单
  
     产品
    
     kv存储:Redis、MemcacheDB
  
     文档存储:MongoDB
  
     列存储:HBase
  
     图存储:Neo4j
  
     对象存储、XML存储等
  
     NewSQL    
     结合了SQL和NoSQL的特性    
     TIDB  
     Redis描述
    
     特性
    
     丰富的数据类型  
     支持单机和分布式  
     功能丰富    
     replication  
     LUA脚本  
     LRU驱动事件  
     事务  
     不同级别的磁盘持久化  
     支持多种编程语言  
     高可用、集群  
     安装启动
    
     安装    
     Linux  
     Windows  
     Docker  
     配置
                   
    - redis.conf
- 启动时携带参数
- config set动态设置
 命令参考
  
     数据类型    
     string    
     描述:Binary-safe strings  
     存储类型:int\float\string
  
     使用场景
    
     缓存  
     数据共享
  
     分布式锁  
     全局ID
  
     计数器  
     限流  
     位统计  
     存储结构    
     外层哈希:hashtable存储模型
  
     SDS    
     为什么不用C语言字符串  
     SDS特点
  
     hash    
     描述:包含键值对的无序散列表  
     存储类型:value只能是字符串,不能嵌套其他类型  
     hash与string区别  
     使用场景    
     string能做的事情,hash都可以做
  
     存储对象类型的数据:电商购物车  
     不适合的场景
  
     存储结构    
     hash存储示例
  
     内层哈希    
     ziplist  
     hashtable  
     list    
     描述:双向有序、元素可重复  
     存储类型:存储有序的字符串  
     使用场景    
     充当队列和栈
  
     用户消息时间线  
     存储结构    
     早期版本    
     ziplist  
     linkedlist  
     3.2版本之后    
     quicklist  
     set
    
     描述:无序集合  
     存储类型:存储无序的字符串,最大存储量2^31-1(40亿)  
     使用场景    
     抽奖:随机获取元素  
     点赞、签到、打卡  
     收藏标签  
     商品筛选    
     交集
  
     并集  
     差集  
     用户关注、推荐模型    
     相互关注  
     我关注的人也关注了他  
     可能认识的人  
     存储结构
    
     intset  
     hashtable
  
     zset    
     描述:有序集合  
     存储类型:每个元素都有个score来实现排序  
     使用场景    
     排行榜
  
     热搜  
     存储结构    
     ziplist  
     skiplist+dict  
     其他    
     BitMaps  
     Hyperloglog  
     Geo  
     Streams  
     skiplist  
    
 
 
 
 
  0 条评论
 下一页
  
   
   
   
   
  
  
  
  
  
  
  
  
  
  
 