Redis数据类型优缺点持久化⽅式⽬录
1.Redis数据类型
  1. 字符串
    value的数据结构(数组)
      字符串value数据结构类似于数组,采⽤与分配冗余空间来减少内存频繁分配
      当字符串长度⼩于1M时,扩容就是加倍现有空间
      如果字符串长度操作1M时,扩容时最多扩容1M空间,字符串最⼤长度为 512M
    字符串的使⽤场景(缓存)
      字符串⼀个常见的⽤途是缓存⽤户信息,我们将⽤户信息使⽤JSON序列化成字符串
      取⽤户信息时会经过⼀次反序列化的过程
    name: value (value=json.dumps([{‘11.12迟到’},{},{}]))
  2. list(列表)
    value的数据结构(双向链表)
      列表的数据结构是双向链表,这意味着插⼊和删除的时间复杂度是0(1),索引的时间复杂度位0(n)
      当列表弹出最后⼀个元素后,该数据结构会被⾃动删除,内存被回⼿
    列表的使⽤场景(队列、栈)
  3. hash(字典)
    value的数据结构(HashMap)
      redis中的字典也是HashMap(数组+列表)的⼆维结构
      不同的是redis的字典的值只能是字符串
    hash的使⽤场景(缓存)
      hash结构也可以⽤来缓存⽤户信息,与字符串⼀次性全部序列化整个对象不同,hash可以对每个字段进⾏单独存储      这样可以部分获取⽤户信息,节约⽹络流量
      hash也有缺点,hash结构的存储消耗要⾼于单个字符串字符串函数去重
      info={“name”:“zhs”,“age”:18}
        字符串存:info={"name":"zhs","age":18}      ⼀次全部读取
        hash:info={"name":"zhs", "age":18}          hash 可以根据key取值
  4. set(集合)
    value的数据结构(字典)
      redis中的集合相当于⼀个特殊的字典,字典的所有value都位null
      当集合中的最后⼀个元素被移除后,数据结构会被⾃动删除,内存被回收
    set使⽤场景
      set结构可以⽤来存储某个活动中中奖的⽤户ID,因为有去重功能,可以保证同⼀⽤户不会中间两次
    set 是⽆序集合
      sadd key member 添加⼀个 string 元素到 key 对应 set 集合中,成功返回 1,如果元素以及 在集合中则返回 0,key 对应的 set 不存在则返回错误
      继续添加,返回0表⽰添加失败,说明set集合,不允许添加重复元素
      smembers smembers smembers key 返回 key 对应 set 的所有元素,结果是⽆序的
  5. zset(有序集合)
    value的数据结构(跳跃列表)
      zset⼀⽅⾯是⼀个set,保证了内部的唯⼀性
      另⼀⽅⾯它可以给每⼀个value赋予⼀个score,代表这个value的权重
      zset内部实现⽤的是⼀种叫做“跳跃列表”的数据结构
      zset最后⼀个元素被移除后,数据结构就会被⾃动删除,内存也会被回收
    zset应⽤场景
      粉丝列表:value(粉丝ID),score(关注时间),这样可以轻松按关注事件排序
      学⽣成绩:value(学⽣ID),score(考试成绩),这样可以轻松对成绩排序
2.Redis优点
  redis为什么快
    单线程避免上下⽂切换
    纯内存操作
    ⾮阻塞IO多路复⽤
  缺点
    内存限制,不能存海量数据
3.持久化⽅式
  RDB(快照)
    全量同步:从服务器有的数据全部丢弃,主服务器把所有数据发给他。
    redis把磁盘中原有数据全部丢弃,然后把redis内存中数据全部重新写⼊磁盘
    缺点:
      会丢失数据(当磁盘数据丢弃,正在写⼊时如果出现故障会导致数据丢失)
    优点:
      整个Redis数据库将只包含⼀个⽂件,⼀旦系统出现灾难性故障,我们可以⾮常容易的进⾏恢复。
      性能最⼤化,它仅需要fork出⼦进程,由⼦进程完成持久化⼯作,极⼤的避免服务进程执⾏IO操作了。
  AOF
    增量同步:主服务器只发送从服务器缺少的数据。
    把所有的修改操作先写⼊⽇志中,然后逐条的执⾏最后就写⼊磁盘
    缺点:
      - 对于相同数量的数据集⽽⾔,AOF⽂件通常要⼤于RDB⽂件,RDB 在恢复⼤数据集时的速度⽐ AOF 的恢复速度要快。      - AOF在运⾏效率上往往会慢于RDB
    优点:
      - 数据安全性⾼,Redis中提供了3中同步策略,即每秒同步、每修改同步和不同步
  redis从主从同步应该采⽤哪种⽅式?
  当主从刚连接的时候,进⾏全量同步;全量同步结束后,进⾏增量同步
  当然,如果有需要,slave在任何时候都可以发起全量同步
  redis的策略,如论如何,⾸先会尝试增量同步,如不成功,要求从机进⾏全量同步。
4. 智能dns
  可以根据⽤户⽹络的出接⼝公⽹IP,解析出距离最近的服务器访问
nslookup www.baidu
tracert ip

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。