redis

作者: Winnifred_ | 来源:发表于2020-03-14 18:09 被阅读0次

    redis的命令这里就不再赘述,请移驾Google或者redis官网查看,这里记录的其实是我最近看的东西,工作的使用都会,但是底层的实现,我一直都没仔细研究过,so today i will show you what i learned recently

    1.缓存,相信目前都是使用redis或者mongoDB来做数据的缓存,而我们项目使用的是redis缓存一些系统配置信息,而不用读取数据库,每次读取数据库太浪费资源,但是在每次系统重启时,这些数据会清空

    2.持久化数据,见字知意,它提供了两种持久化方式

    (1 RDB:

    RDB其实是一种快照持久化方法,将某一时刻的数据持久化到磁盘,RDB持久化的过程其实是会将数据都写入到一个临时文件,但写入完毕,会将这个临时文件替换上次持久化好的文件,它可以设置多长时间进行备份一次,适合备份,全量复制以及灾难恢复的场景,但是RDB方式没有AOF获取数据实时,且每次都要执行fork创建一个子进程,这种重量级的操作,频繁的话成本会很高,(二进制文件),定时保存在redis服务down时,会丢失这部分的数据

    (2 AOF方式:(追加)

    可配置fsync策略:无fsync,每秒fsync,每次写的时候fsync.使用默认的每秒fsync策略,Redis的性能依然很好(fsync是由后台线程进行处理的,主线程会尽力处理客户端请求),一旦出现故障,你最多丢失1秒的数据,它其实是追加(append)、文件写入、文件同步(sync)三个步骤完成数据持久化的,且AOF有序地保存了对数据库执行的所有写入操作, 保存的文件是以Redis 协议的格式保存的,易读性高,但是相同的对于相同的数据集来说,AOF保存的文件要大于RDB保存的文件,所以在数据恢复时比较耗时

    配置:

    (1 RDB:

    redis.conf

    save 900 1    每900秒之内,如果超过1个key被修改,则发起快照保存

    (2 AOF 

    appendonly yes

    go中使用reids

    //连接redis,使用redis连接池,同理在使用http连接时,也适用池子而不是每次都去连接,避免每次发起请求连接耗时

    AdjustConnPool = &redis.Pool{MaxIdle: 2000, MaxActive: 1000, IdleTimeout: 180 * time.Second, Dial: func() (redis.Conn, error) { c, err := redis.Dial("tcp", addr) if err != nil { return c, err } if passwd == "" { return c, nil } _, err = c.Do("AUTH", passwd) if err != nil { return c, err } return c, nil },}

    //我们还可以对redis进行监听

     psc := &redis.PubSubConn{Conn: c}    

    if err := psc.PSubscribe(pattern...); err != nil {       

        glog.Errorln("redis subscribe error", err)      

         return    

    go func() {       

    for {       

           msgChan <- psc.Receive()       

    }    }()    

    for {      

    var ticker = time.NewTicker(time.Minute)

     select {       

    case msg := <-msgChan:          

    switch n := msg.(type) {          

    case redis.Message:     //订阅的消息通知。我们所需要的数据

    case redis.Subscription:    //訂閱表示訂閱或取消訂閱通知

    case error:    //redis PubSubConn receive an error

     case <-ticker.C:    //    超时处理

    }

    当然redis还有其他很多知识点,我只是写了一下我最近整理的一些,今天在和一个做电商平台的小伙伴聊的时候,在我们提交订单的时候其实就是对redis的key做了一个有效时间的设置,时间到了,订单就会自动取消 ---------滴滴滴滴,写的原因是我没用过给key设置有效时间所以在这备注了下

    今日推荐兽爷的一篇文章  yeah    =。=

    https://mp.weixin.qq.com/s/ZBbkPFU8iyI72vb3n799bA 

    相关文章

      网友评论

        本文标题:redis

        本文链接:https://www.haomeiwen.com/subject/ohjgshtx.html