摘抄自知乎的redis相关
1.知乎日报的基础数据和统计信息是用 Redis 存储的,这使得请求的平均响应时间能在 10ms 以下。
其他数据仍然需要存放在另外的地方,其实完全用 Redis 也是可行的,主要的考量是内存占用。
就使用经验而言,Redis 的数据结构很丰富,精心设计地话,能满足很多应用场景。至少很多时候比 MySQL 更方便
2.单独使用Redis的话,它是成当不起数据库的任务,比如你每日活跃用户是1万人,但是你那台redis里面已经积累了50万人了(这个比例很正常),那么每次redis启动,就需要把50万load内存,每次redis备份,又需要把50万dump到磁盘,这靠谱么?
把冷数据落地到mongo,热数据在用redis存储。
3.redis是目前公认的速度最快的基于内存的键值对数据库,但redis的缺点也非常明显,仅提供最基本的hash set, list, sorted set等基于数据类型,不分表,没有schema,没有索引,没有外键,缺少int/date等基本数据类型,多条件查询需要通过集合内联(sinter,zinterstore)和连接间接实现,操作不便,开发效率低,可维护性不佳; 因此一般不将其视为完整的数据库单独使用,很多网站将redis作为高速缓存和session状态存储层,然后再与其他数据库搭配使用。
4.核心业务建议数据还是落地到mysql,redis在异常情况下回丢数据。
非核心业务,比如运营推广,数据聚合统计这种允许数据少量丢失的业务可以全用mysql,扩展方便,效率高,业务量也不大。特别是运营推广这种时效性很强的业务,在推广结束后数据接没用了,Redis内存压力也不会很大。
mysql能支持对各个字段的查询,Redis的查询仅限于对key的简单匹配,如果要对value进行复杂查询,不适合用Redis。
5.目前redis做数据库还不太靠谱。它支持的数据类型太少,而且查询功能太弱。redis并不是为了作为数据库使用的,它更多地是一个高速存取器,一般用作缓存和类似场景。
6.redis是一种k/v的内存数据库,适合小数据量的存储以及实时要求高的地方,但是不适合做完整数据库,完整数据库基本上都有一套详细解决方案,比如mysql。
我们项目里用到的redis是用来做缓存的,设置过期时间,到时就自动清掉。数据库还是用mysql等这种成熟的方案。
如果你非要用一种nosql来做数据库,推荐你用Mongodb
7.redis能否做数据库用取决于如下几个条件:
1:数据量,毕竟内存数据库,还是受限于内存的容量,虽然可以redis可以持久化。
2:数据的结构,是否能够将关系型数据结构都转换为key/value的形式。
3:查询的效率,对范围查询等,是否能转换为高效的hash索引查询
8.MongoDB不是内存型数据库,他只不过把所有文件索引存到内存里而已。同样的机型,用MongoDB会比Redis存更多,但Redis响应更快。关键的是看量有多大。
9.MongoDB是nosql数据库,它支持把一部分热数据放到内存中,方便用户更快的去处理它。
Redis是内存型数据库,是完全的内存数据库!所有的数据都在内存,不存在硬盘一部分,内存一部分的情况。当然可以用save去存数据到硬盘,但这是为了备份安全性考虑而不是使用。
10.一个哈希实际上是一组键值对的集合,哈希本身的键是“父键”,哈希中包含的若干字段是“子键”,每个“子键”都有相应的值。“子键”之间并没有一定的联系,但是它们共同组成了一个完整的哈希结构。我们可以把一个哈希看做关系数据库中的一行,哈希的每个子键对应行的一个字段。因此,当把关系数据库中的数据缓存至Redis时,使用哈希结构可能会带来方便。需要注意的是,哈希结构内部的子键之间是没有顺序关系的。
11.Redis是一种内存数据库,这使其在数据存取效率方面表现突出。由于内存中的数据时刻面临丢失的危险,Redis提供了两种持久化机制,及时将内存中的数据写入硬盘。第一种机制为RDB,利用存储快照的方式把内存数据定期写入硬盘;第二种机制为AOF,利用写日志的方式,每执行一条更改Redis数据的命令,就在日志里附加上该命令并保存在硬盘上。Redis默认开启RDB模式,关闭AOF模式,这是因为AOF更加耗时。但是,如果对数据安全要求极高,无法承担任何数据丢失的后果,AOF模式就变成了持久化的首选。
当然,即使Redis具备持久化机制,但是一旦本地硬盘损坏,数据丢失依然在所难免。所以,Redis又提供了复制功能,作用是将一个主数据库(master)的数据自动同步到多个从数据库(slave),从而尽可能防止数据丢失。Redis主从机制可以简单描述为:从数据库启动后,先向主数据库发送SYNC命令;主数据库接到SYNC命令后就开始保存快照,在此期间,所有发给主数据库的命令都被缓存起来;快照保存完成后,主数据库把快照和缓存的命令一起发给从数据库;从数据库保存主数据库发来的快照文件,并依次执行主数据库发来的缓存命令。在同步过程中,从数据库不会阻塞,它默认使用同步之前的数据继续响应客户端发来的命令。
转载于:https://www.cnblogs.com/wan-wu-sheng/p/6994275.html
摘抄自知乎的redis相关相关推荐
- PHP连接redis并执行redis相关命令的方法详解
PHP连接redis并执行redis相关命令的方法详解 连接redis库的方法 共性的运算归类 redis服务类函数 set 操作增删改查 List栈的结构,注意表头表尾,创建更新分开操作 Set,没 ...
- Spring中RedisTemplate方法中,redis相关操作笔记。[redis生成指定长度自增批次号,删除、设置过期时间等]
Spring中RedisTemplate方法中,redis相关操作笔记. redis获取自增批次号 // opsForValue()生成long UUID = redisTemplate.opsFor ...
- 缓存数据库Redis相关介绍
Redis 一.Redis相关介绍 二.如何保持session会话 三.nginx+tomcat+redis实现负载均衡.session共享 四.Redis基本操作命令 五.Redis持久化的实现方法 ...
- Redis相关命令及使用场景介绍
1. Redis相关命令及使用 1.1 string 格式:(key:value) SET key value 添加一个key value 值(set 键 值) 127.0.0.1:6379> ...
- 14.Redis相关原理
案例背景 Redis 属于单线程还是多线程?考察 Redis 的线程模型 案例分析 基本都知道 Redis 是单线程的,并且能说出 Redis 单线程的一些优缺点,比如,实现简单,可以在无锁的情况下完 ...
- 小李学知识之redis相关(含redis面试题)
Redis相关学习 1. 简单介绍 2. redis缓存数据的流程 2.1 redis作为缓存的原因 3. redis的基本命令 4. redis支持的五种数据结构以及相关命令 4.1 String ...
- Redis 相关知识点
Redis 相关知识点 概述 为什么要用缓存 为什么用redis 用redis缓存了哪些东西 单线程redis为什么这么快 redis的数据类型和使用场景 redis 的过期策略都有哪些?内存淘汰机制 ...
- redis相关知识点讲解,redis面试题
redis相关知识点讲解,redis面试题 1. redis基本知识点 1.1 什么是redis? 1.2 redis的key的设计 1.3 redis的value数据类型有哪些? 1.3.1 str ...
- Redis相关漏洞记录
不是很了解Redis数据库,粗浅学了一下Redis应该是以键值对的方式存储数据的 Redis默认端口:6379 Redis相关操作 连接远程服务器: redis-cli -h [目标IP] -p [端 ...
最新文章
- assign和always的使用
- google Guava包的ListenableFuture解析
- php 单元测试 静态类,可选的PHP类型提示/检查单元测试或静态分析?
- 查看UNIX/Linux资源占用的top命令
- WinSock API网络编程——TCP/IP协议详解
- 【网站】 简单通用微信QQ跳转浏览器打开代码
- AIOps中异常检测简的单应用
- [译]Go语言常用文件操作汇总
- map java 初始化赋值_Java 中 HashMap 初始化时赋值(示例代码)
- 2. 使用keras-神经网络来做线性回归问题
- 颜色是如何混合出来的
- 【Arduino】IIC 1602液晶屏显示
- 天牛须搜索算法优化神经网络_matlab代码
- 主体阶段钢筋工程、模板工程、混凝土、管线预埋施工要点都有哪些?
- 重磅消息:微信支付分最新开通方法!
- Translatium 19.2.1 中文版 优秀的在线翻译工具
- 【渝粤教育】广东开放大学 工程经济 形成性考核
- docker部署内网dns解析服务(coredns方案)
- 学习c/c++ 推荐学习什么书籍?
- 接班人不是克隆出来的:华为再显接班难
热门文章
- 【POJ - 3211】Washing Clothes (dp,0-1背包中点问题)
- *【Hihocoder - offer编程练习赛94 - A】最短管道距离(中位数)
- 【CodeForces - 124D】Squares (旋转坐标系,计算几何,思维)
- 操作表格_Excel表格基础操作-新手入门级
- 链表c语言stl,C++STL之List容器
- mysql瓶颈分析_网站瓶颈分析—MYSQL性能分析
- java用链表做学生系统_C语言链表实现学生管理系统
- 日期时间格式之间的相互转换
- Java 代码性能优化
- 四川省中职计算机考试题,四川省计算机等级考试模拟试题(一级)