zoukankan      html  css  js  c++  java
  • Redis (学习笔记)

    Redis是一个key value的存储系统,支持存储的value类型相对较多(包括String字符串、list链表、set集合、arrySet有序集合)

    这些数据类型都支持 push、pop、add、remove及取交、并、差集等原子型操作(原子型指一个事物完整的操作,操作成功则提交,失败则回滚)

    因此调用Redis的操作,不用考虑多线程间的并发问题。

    在此基础之上,Redis支持各种不同方式的排序,为了保正效率,数据都是缓存在内存中的。

    区别是Redis会周期性的把更新的数据写入磁盘,或者把修改操作写入追加的操作文件(前者为默认的RDB存储模式,RDB:是将数据写入一个零时文件,持久化结束以后,用这个零时文件替换上次持久化的文件,达到数据恢复的目的,其优点是:使用单独子进程来进行持久化,主经常不会进行任何操作,保证了Redis的高效性能,其缺点是:RDB是间隔一段时间进行持久化,如果持久化之间,Redis发生故障,会发生数据的丢失,所以这种方式适合数据要求不严谨的时候。其存储机制默认设置为,如果更改了一个key则间隔900秒之后,进行一次持久化存储,如果更改了10个key,则300秒后进行一次持久化存储,如果更改1万个key,则自修改时起,一分钟进行一次持久化存储,持久化完成后就将零时文件替换掉旧的RDB文件了)

    RDB恢复数据:重启Redis服务,启动的时候Redis的server会从dump.rdb中同步数据。

    AOD恢复数据:是将执行过的指令记录下来,数据恢复按照从前到后的顺序再将指令执行一遍,实现数据恢复。优点:可以保持更高的数据完整性,如果设置追加file的时间是1s,如果redis发生故障,最多会丢失1s的数据。且如果日志写入不完整支持redis-check-aof来进行日志修复;AOF文件没被rewrite之前(文件过大时会对命令进行合并重写),可以删除其中的某些命令(比如误操作的flushall)。缺点:AOF文件比RDB文件大,且恢复速度慢。

    这里有一篇文章可以参考:https://www.cnblogs.com/meitian/p/5209877.html

     设计意图:将一些不常更改的数据,存一个副本到Redis中,客户端在请求这些数据的时候,将优先发送请求去Redis中获取相关数据,如果Redis中存在相关的数据,则直接返回,就不需要访问数据库了,如果在Redis中没有获取到,则发送请求去DB获取相关数据,在DB返回数据的同时,将最新最新的数据更新回Redis中,这样客户端在下次请求这个数据时,就可以直接从Redis中返回了。(且为了确保Redis缓存的实时性,即每当数据发送变化的时候,比如数据有被修改或删除的情况下,要同步更新Redis缓存信息,确保用户不会在缓存中取到旧的信息)

    可以在操作数据时,先清空对应key下的数据,这样客户端请求时就会去db中更新,下次再请求时就可以直接从Redis中获取数据了。

  • 相关阅读:
    C语言 sprintf 函数 C语言零基础入门教程
    C语言 printf 函数 C语言零基础入门教程
    C语言 文件读写 fgets 函数 C语言零基础入门教程
    C语言 文件读写 fputs 函数 C语言零基础入门教程
    C语言 fprintf 函数 C语言零基础入门教程
    C语言 文件读写 fgetc 函数 C语言零基础入门教程
    C语言 文件读写 fputc 函数 C语言零基础入门教程
    C语言 strlen 函数 C语言零基础入门教程
    Brad Abrams关于Naming Conventions的演讲中涉及到的生词集解
    适配器模式
  • 原文地址:https://www.cnblogs.com/xk920/p/10069556.html
Copyright © 2011-2022 走看看