Redis支持的类型:

  String,List,Map,Set,Sorted set

Redis的持久化:

  1、Redis DataBase (RDB): RDB是在某个时间点将数据写入一个临时文件,持久化结束后,用这个临时文件替换上次持久化的文件,达到数据恢复。

    优点:使用单独子进程来进行持久化,主进程不会进行任何IO操作,保证了redis的高性能

    缺点:RDB是间隔一段时间进行持久化,如果持久化之间redis发生故障,会发生数据丢失。所以这种方式更适合数据要求不严谨的时候

  2、Append Only File (AOF): 将“操作 + 数据”以格式化指令的方式追加到操作日志文件的尾部,在append操作返回后(已经写入到文件或者即将写入),才进行实际的数据变更,“日志文件”保存了历史所有的操作过程;当server需要数据恢复时,可以直接replay此日志文件,即可还原所有的操作过程。AOF相对可靠,它和mysql中bin.log、apache.log、zookeeper中txn-log简直异曲同工。AOF文件内容是字符串,非常容易阅读和解析。

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

Redis主从面临的问题:

    1、主从机制,可以提供读写分离,分担读的请求压力。但是主只有一个,存在单点故障的问题。  

哨兵机制面临的问题:

  1、解决了主从的单点问题,但是主服务器只有一个,写性能不足。

Redis集群:终极解决方案 ,解决了主从机制的单点问题,和哨兵机制的主服务器唯一,写性能问题。

Redis为什么这么快:

  1、 纯内存操作。

  2、单线程,避免线程切换的开销。

  3、使用I/O多路复用机制。

缓存面临的问题:

  1、缓存雪崩

    问题描述:缓存同一时间大面积失效,当请求到达的时候,导致所有的请求都怼到数据库上,导致数据库链接异常。

    解决方案: a、缓存预热的时候,设置随机过期时间。

          b、利用互斥锁,缓存失效的时候,先获取互斥锁,得到锁再去操作数据库,否则休眠等待锁。(缺点:吞吐量下降)

  2、缓存击穿

    问题描述:黑客故意去请求缓存中不存在的数据,导致所有的请求都怼到数据库上,从而数据库连接异常。

    解决方案: a、利用互斥锁,缓存失效的时候,先获取互斥锁,得到锁再去操作数据库,否则休眠等待锁。

          b、黑名单机制,禁止黑名单中的ip地址访问。

  3、缓存与数据库双写一致性问题

    问题描述:请求A为读请求,请求B为修改请求,它们请求的为同一个东西。请求B先到达,修改数据库数据成功,未来得及更新缓存。此时请求A到达,获取缓存中的脏数据。

    解决方案:先删除缓存,再更新数据库,最后再更新缓存。

  4、缓存的并发竞争问题。

    问题描述:同时有多个子系统去设置同一个key。

    解决方案: a、分布式锁,得到锁才进行操作,其它线程等待。

          b、使用队列,将set操作,变成串行访问。

Redis 采用的是定期删除+惰性删除策略、内存淘汰策略

  1、定期删除:固定时间内,随机抽取Redis内的数据,进行过期检查。

  2、惰性删除:当获取该key的时候,再判断是否过期。

  3、内存淘汰策略:在 redis.conf 中有一行配置:maxmemory-policy volatile-lru   就是配置内存淘汰的策略,用以补充定期删除+惰性删除的不足。

  allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的 Key。推荐使用。(其余的分别是:noeviction、allkeys-random、volatile-lru、volatile-random、volatile-ttl)

    

Redis-概述的更多相关文章

  1. redis 概述、windows版本下载启动访问退出安装、中文乱码、RedisDesktopManager下载

    redis 概述 redis的key是string类型的:value有多种类型,但放入的不是特定类型数据,添加的都是string,只是redis把这些值组织成了各种数据结构.key和相应的值都是str ...

  2. Redis概述以及Linux安装

    Redis 概述 Redis是什么 Redis,Remote Dictionary Server,远程字典服务.是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.key-v ...

  3. [Redis]Redis 概述及基本使用规范.

    1 nosql的简介 1.1 nosql简介 随着互联网Web2.0网站的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站已经显得力不从心,暴露 ...

  4. Redis概述与基本操作

    redis教程 概述 redis是一种nosql数据库,他的数据是保存在内存中,同时redis可以定时把内存数据同步到磁盘,即可以将数据持久化,并且他比memcached支持更多的数据结构(strin ...

  5. redis 概述及部署 安装php和python客户端

    概述 Redis是一个基于key-value键值对的持久化数据库存储系统.redis支持的数据存储类型比memcached更丰富,包括strings(字符串),lists(列表),sets(集合)和s ...

  6. 跟我一起学Redis之Redis概述

    背景 技术的更新迭代,是程序员最最最头大的事,总是在每个网络角落中有感慨声:学不动啦: 其实新技术并不是凭空而出,而是随着业务推进.数据驱动.技术积累促使开发者的不断探索和实践,最终横空出世--&qu ...

  7. Redis学习(1)---Redis概述

    什么是NoSQL 概述 NoSQL:Not Only SQL,意思不仅仅是SQL,它是属于非关系型数据库.那什么是关系型数据库?数据结构是一种有行有列的数据库. NoSQL数据库是为了解决高并发.高可 ...

  8. Redis概述

    1.       Redis是使用内存存储(in-momory)的非关系型数据. 2.       Redis的数据存储选项共有5种:字符串.列表.集合.散列表.有序集合. 3.       Redi ...

  9. redis学习(2)--- Redis概述

    一.Redis介绍 高性能键值对数据库,支持的键值对数据类型: 字符串类型 列表类型 有序集合类型 散列类型 集合类型 官方测试读写速度: 测试50个并发程序,执行10万次请求 读的速度:每秒11万次 ...

  10. redis概述(一)

    什么是NoSql? 为了解决高并发.高可用.高可扩展,大数据存储等一系列问题而产生的数据库解决方案,就是NoSql. NoSql,叫非关系型数据库,它的全名Not only sql.它不能替代关系型数 ...

随机推荐

  1. 初学struts2框架

    昨天初学strts2,折腾了一晚上才正好一个简单的应用程序,在这个过程中遇到了很多的问题. 1. struts2的更新太快,所以从图书馆借的书常常会跟不上变化,所以有时执行起来会很麻烦. 2. 如果你 ...

  2. sort函数详解(史上最完整QAQ)

    1.sort 使用:#include <algorithm>   using namespace std; 作用:排序 时间复杂度:n*lg(n) 实现原理:sort并不是简单的快速排序, ...

  3. C#-WebForm-设置div边框为内边框:box-sizing:border-box;

    设置div边框为内边框:box-sizing:border-box;

  4. C#-WebForm-组合查询(Queryable延迟查询、Intersect交集)、分页展示基础

    组合查询: 方法一:Queryable<> 延迟查询 其特点是:读到词句代码时不会立即执行,而是在进行数据绑定时执行 优点:此期间可以进行添加查询条件,以减少数据库查询内容,来减少内存占用 ...

  5. asp.net图片上传代码

    前端: <form action="/ImageUpload.ashx" method="post" enctype="multipart/fo ...

  6. Luogu P1342 请柬 题解

    差不多是Dijkstra的裸题吧... 这道题可以分为来回两个阶段. 去的时候很简单,直接用一次Dijkstra,然后统计答案. 回来的时候就有些巧妙了,虽然表面上是每个点回到起点,但是何尝不可将其看 ...

  7. docker 暴露2375 端口。

    网上找的.大多不能用...一下是我自己找了半天的方法...,可能是版本太旧的原因 下图解决方法: ubuntu: 18.04 docker: Docker version 18.09.2, build ...

  8. 【App性能分析】:tracelog分析法

    tracelog可以记录每个OpenGL函数调用的消耗时间,所以很多时候用来作performance分析.目前只支持安卓4.1以上的版本设备 1,目前Android Device Monitor最新的 ...

  9. 【GIS新探索】算法实现在不规则区域内均匀分布点

    1 概要 在不规则区域内均匀分布点,这个需求初看可能不好理解.如果设想一下需求场景就比较简单了. 场景1:在某个地区范围内,例如A市区有100W人口,需要将这100W人口在地图上面相对均匀的标识出来. ...

  10. Mac下常用快捷键(转)

    前提,先熟读键盘快捷键符号:http://www.cnblogs.com/EasonJim/p/6350075.html 基本操作: Command-Z 撤销 Command-X 剪切 Command ...