zoukankan      html  css  js  c++  java
  • redis总结

    1.redis特性(为什么使用redis):数据存在内存中;单线程;多路复用;协议简单(rtsp)

    2.redis支持10W+/s的处理数据量

    3.5种数据结构:string  list   hash   set  zset 

    key都是字符串,value是上述5种结构。

    hash: 存对象,如  hset user:1(key) id xxx name xxx .....(value)  其中,vaule最大存512M。

              value是序列化的对象

    zset:有序集合

    setnx关键字:相当于if。。。else....判断,如果redis中存在key值,则不插入数据,如果不存在key,则插入key的值

    4.redis默认16个库,但是集群中的每个节点,就只有一个库了。集群不用16个库。

    5.redis雪崩:当内存中的一个key过期后,此时,大量的客户端访问到这个key,内存中没有这个key,都去数据库里查询,造成了数据库压力过大。称为redis雪崩。解决方案:在代码块中加锁,大量客户端访问key时,通过锁机制限制访问代码块的先后,第一个抢到锁的去查询数据库,其他的直接从内存中获取值。

    6.redis穿透:当查询一个随便乱输入的,没有存储的key时,程序会一直查询数据库,给数据库造成压力。解决方案是将数据库中存入缓存的数据放入布隆过滤器中,先在过滤器中查找是否有该条数据,如果有,再从数据库里查询,然后放入缓存中,如果没有,则不会查询数据库。布隆过滤器有自己的算法,性能好。不用考虑这个耗费时间和性能。

    7.redis持久化:

    rdb:定时持久化,不适合实时持久化,低版本的rdb文件转向高版本可能存在不兼容的现象。

    aof:实时保存,里面存的都是命令语句

    8.redis的key和value都占内存大小,

    key的设计原则:功能模块,表名或业务模块命名,要短。

    String类型应用场景:1.做计数,如文章的浏览次数等。利用incr特性做增加

    (tomcat一秒支持500个访问数的并发)

    实战:redis支持10W+/s的并发量,但是为了降低redis压力,一般redis往tomcat返回值时,进行批量返回,tomcat用完批量的值之后,再去redis中取值,来降低reids访问压力。利用的也是redis的incr特性进行的操作。

    9.redis实现分布式锁要点:

    用setnx命令,如果key存在,则报错,如果不存在,则插入,以此来对公共资源(key)进行锁机制同步;

    设置key的过期时间,防止设置key的程序挂了之后,redis中的key无法删除,造成死锁现象;

    每个线程生成一个uuid,当value存入redis中,以便于解锁时找到哪个现场抢到的锁。

    解锁时,用lua脚本进行解锁,删除key值的操作。因为lua脚本是原子性的,要么全部成功,要么全部失败,以此来避免删除了key值,但是redis挂掉了,给服务返回了删除失败的情况,这种情况下,服务以为锁还没释放,其实key已经删除了,就有问题了。

    10.redis中Set集合可以进行交集,并集,差集等的计算,利用此特性,可以实现一些需求,如微博的微关系等业务。

    11.jedis查询redis时,也可以进行分页查询。

    12.lua脚本:类似于存储过程,在redis中执行,返回结果,具有原子性,

    13.限流:

     限制总并发数,说白了性能优化不了了,就进行限流

    14.redis高可用:

    主从模式:一主一从,主的挂了,从的不能自动成为主的,一般不用

    哨兵模式:一个主两个从,自动切换为主的,

    6台redis服务器:3主3从,key通过hash值计算,放入redis不同的主节点中,主节点挂了,从节点自动切换。至少两个以上的节点任务主节点挂了,才会进行节点转移

  • 相关阅读:
    你的面向对象技术在哪个级别?
    图解面向对象中的聚合与耦合概念
    系统架构39问
    谈谈对一些软件架构设计箴言的理解
    mysql 常用见的错误处理
    mysql 局域网连接
    mysql版本:'for the right syntax to use near 'identified by 'password' with grant option'
    Ubuntu系统开放指定端口
    spring cloud 项目
    spring cloud 知识总结
  • 原文地址:https://www.cnblogs.com/hongyuansu/p/14163024.html
Copyright © 2011-2022 走看看