-
为什么用mysql不用redis_为什么不用redis做数据库
2021-01-27 06:02:12redis能否做数据库用取决于如下几个条件: (推荐学习:Redis视频教程)1:数据量,毕竟内存数据库,...3:查询的效率,对范围查询等,是否能转换为高效的hash索引查询redis能不能拿来当数据库,取决于你想要存储什么...redis能否做数据库用取决于如下几个条件: (推荐学习:Redis视频教程)
1:数据量,毕竟内存数据库,还是受限于内存的容量,虽然可以redis可以持久化。
2:数据的结构,是否能够将关系型数据结构都转换为key/value的形式。
3:查询的效率,对范围查询等,是否能转换为高效的hash索引查询
redis能不能拿来当数据库,取决于你想要存储什么数据:
如果你打算存储一些临时数据,数据规模不大,不需要太复杂的查询,但是对性能的要求比较高,那可以拿redis当数据库使用,否则别拿来当数据库用。
1. 像上面提到的,redis的持久化有问题,如果使用aof模式,并且fsync always,则性能比mysql 还低,如果你喜欢redis 方便的数据结构而对性能要求不高,或者性能要求很高,但允许一定程度的丢失数据,则可以用redis做为数据库。
2.redis 是内存数据库, 内存写满后,数据不会存储到硬盘上(VM 不稳定,diskstore未启用),如果你内存足够大,则可以用redis作为数据库。
redis是一种k/v的内存数据库,适合小数据量的存储以及实时要求高的地方,但是不适合做完整数据库,完整数据库基本上都有一套详细解决方案,基本上没有做了的,比如mysql。
项目里用到的redis是用来做缓存的,设置过期时间,到时就自动清掉。数据库还是用mysql等这种成熟的方案。
如果你非要用一种nosql来做数据库,推荐你用Mongodb。
这种KV存储完全不具备数据库所能提供的数据安全性保障。
所以还是用来做缓存比较合适。
redis做数据库不靠谱,不是所有的数据都是立即回写磁盘的。
-
redis怎么不让存byte_为什么不用redis的hash来存储对象?
2021-01-12 06:44:04我来给你解释: 第一,通过...你该说了,bytemap最快啊,为啥不用啊,因为作者用了超级强悍的序列化工具啊,以上测试基于java的序列化,如果改了序列化工具,你可以测试下。 因本人能力有限,以上可能有谬论,恳请指正我来给你解释:
第一,通过jedis 储存对象有大概三种,one:本课程的序列化成byte字节 ,最终存byte字节,two:对象转hashmap,也就是你想表达的hash的形式,最终存map,three:对象转json,最终存json,其实也就是字符串
第二:其实如果你是平常的项目,并发不高,三个选择都可以,反而你说的hash的形式更加灵活,可以对象的单个属性,但是来了,秒杀的场景的情况下,三者的效率差别很大的
第三:结果如下
10w数据 时间 内存占用
存json 10s 14M
存byte 6s 6M
存jsonMap 10s 20M
存byteMap 4s 4M
取json 7s
取byte 4s
取jsonmap 7s
取bytemap 4s
第四:你该说了,bytemap最快啊,为啥不用啊,因为作者用了超级强悍的序列化工具啊,以上测试基于java的序列化,如果改了序列化工具,你可以测试下。
因本人能力有限,以上可能有谬论,恳请指正
-
为什么用MongoDB而不用Redis
2019-04-08 17:07:06项目中用的是MongoDB,但是为什么用其实当时选型的时候也没有太多考虑,只是认为数据量比较大,所以采用MongoDB。 最近又想起为什么用MongoDB,就查阅一下,汇总汇总: 之前也用过redis,当时是用来存储一些热数据...项目中用的是MongoDB,但是为什么用其实当时选型的时候也没有太多考虑,只是认为数据量比较大,所以采用MongoDB。
最近又想起为什么用MongoDB,就查阅一下,汇总汇总:
之前也用过redis,当时是用来存储一些热数据,量也不大,但是操作很频繁。现在项目中用的是MongoDB,目前是百万级的数据,将来会有千万级、亿级。
就Redis和MongoDB来说,大家一般称之为Redis缓存、MongoDB数据库。这也是有道有理有根据的,
Redis主要把数据存储在内存中,其“缓存”的性质远大于其“数据存储“的性质,其中数据的增删改查也只是像变量操作一样简单;
MongoDB却是一个“存储数据”的系统,增删改查可以添加很多条件,就像SQL数据库一样灵活,这一点在面试的时候很受用。
点击查看:MongoDB语法与现有关系型数据库SQL语法比较
Mongodb与Redis应用指标对比
MongoDB和Redis都是NoSQL,采用结构型数据存储。二者在使用场景中,存在一定的区别,这也主要由于
二者在内存映射的处理过程,持久化的处理方法不同。MongoDB建议集群部署,更多的考虑到集群方案,Redis
更偏重于进程顺序写入,虽然支持集群,也仅限于主-从模式。指标 MongoDB(v2.4.9) Redis(v2.4.17) 比较说明 实现语言 C++ C/C++ - 协议 BSON、自定义二进制 类Telnet - 性能 依赖内存,TPS较高 依赖内存,TPS非常高 Redis优于MongoDB 可操作性 丰富的数据表达、索引;最类似于关系数据库,支持丰富的查询语言 数据丰富,较少的IO MongoDB优于Redis 内存及存储 适合大数据量存储,依赖系统虚拟内存管理,采用镜像文件存储;内存占有率比较高,官方建议独立部署在64位系统(32位有最大2.5G文件限制,64位没有改限制) Redis2.0后增加虚拟内存特性,突破物理内存限制;数据可以设置时效性,类似于memcache 不同的应用角度看,各有优势 可用性 支持master-slave,replicaset(内部采用paxos选举算法,自动故障恢复),auto sharding机制,对客户端屏蔽了故障转移和切分机制 依赖客户端来实现分布式读写;主从复制时,每次从节点重新连接主节点都要依赖整个快照,无增量复制;不支持自动sharding,需要依赖程序设定一致hash机制 MongoDB优于Redis;单点问题上,MongoDB应用简单,相对用户透明,Redis比较复杂,需要客户端主动解决。(MongoDB 一般会使用replica sets和sharding功能结合,replica sets侧重高可用性及高可靠性,而sharding侧重于性能、易扩展) 可靠性 从1.8版本后,采用binlog方式(MySQL同样采用该方式)支持持久化,增加可靠性 依赖快照进行持久化;AOF增强可靠性;增强可靠性的同时,影响访问性能 MongoDB优于Redis 一致性 不支持事物,靠客户端自身保证 支持事物,比较弱,仅能保证事物中的操作按顺序执行 Redis优于MongoDB 数据分析 内置数据分析功能(mapreduce) 不支持 MongoDB优于Redis 应用场景 海量数据的访问效率提升 较小数据量的性能及运算 MongoDB优于Redis 原文转自:https://www.cnblogs.com/java-spring/p/9488227.html
-
为什么是 Redis
2019-08-21 08:50:00为什么要用 redis 而不用 map/guava 做缓存? 缓存分为本地缓存和分布式缓存。以 Java 为例,使用自带的 map 或者 guava 实现的是本地缓存,最主要的特点是轻量以及快速,生命周期随着 jvm 的销毁而结束,并且在多...为什么要用 redis 而不用 map/guava 做缓存?
缓存分为本地缓存和分布式缓存。以 Java 为例,使用自带的 map 或者 guava 实现的是本地缓存,最主要的特点是轻量以及快速,生命周期随着 jvm 的销毁而结束,并且在多实例的情况下,每个实例都需要各自保存一份缓存,缓存不具有一致性。
使用 redis 或 memcached 之类的称为分布式缓存,在多实例的情况下,各实例共用一份缓存数据,缓存具有一致性。缺点是需要保持 redis 或 memcached 服务的高可用,整个程序架构上较为复杂。
redis 和 memcached 的区别
对于 redis 和 memcached 主要有以下四点的区别:
- redis 支持更丰富的数据类型(支持更复杂的应用场景):Redis 不仅仅支持简单的 k/v String 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。memcache 仅支持简单的数据类型:String
- redis 支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用,而 Memecache 只是把数据全部存在内存之中
- 集群模式:memcached 没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据;但是 redis 目前是原生支持 cluster 模式的
- Memcached 是多线程,非阻塞 IO 复用的网络模型;Redis 使用的是单线程的多路 IO 复用模型
redis 和 memcached 的区别 -
mysql为什么不用跳表_Redis为什么用跳表而不用平衡树?
2021-01-28 20:07:12(本文首发于微信公众号:tielei-blog,2016-10-10,原文链接:Redis为什么用跳表而不用平衡树?文章格式比知乎上这个要好一点)本文是《Redis内部数据结构详解》系列的第六篇。在本文中,我们围绕一个Redis的内部数据... -
为什么使用redis、redis 和 memcached 的区别、redis支持的数据类型
2020-04-29 14:46:201、为什么用redis 使用redis缓存,主要是为了解决两个问题:高性能和高并发 (1)高性能 如果不使用缓存的话,对于一些需要后台程序经过复杂的计算、返回的数据相对稳定(不经常变化)、大量用户频繁访问的请求,... -
从业务的角度看 为什么选择redis而不用memcache
2018-03-03 10:54:15为什么想总结一下,从业务的角度看选择redis的理由,而不是从各种角度看呢。主要一下两个原因: 1.网上的文章原创太少,也基本都是从mc和redis的区别不同点去分析看待两个问题,没有清晰的找到我想要的答案 2.技术... -
php redis不用mysql_redis为什么比mysql快
2021-01-21 10:22:01而Redis不用这么麻烦,本身就是存储在内存中,会根据数据在内存的位置直接取出。 (推荐学习:Redis视频教程)Redis是基于内存存储的,MySQL是基于磁盘存储的Redis存储的是k-v格式的数据。时间复杂度是O(1),常数阶,..... -
我们为什么用Redis?
2018-05-18 20:26:221. 和内存一样快的永久存储: 共享内存、Redis,排除Memcache(非永久),排除MySQL(不够快);2. 功能丰富强大、方便易用的数据操作接口,出问题...即使你不用Redis,也要把做这一步,而不是把数据简单地存储在... -
解读:从业务的角度看 为什么选择redis而不用memcache
2016-12-17 12:59:32前言为什么想总结一下,从业务的角度看选择redis的理由,而不是从各种角度看呢。主要一下两个原因: 1.网上的文章原创太少,也基本都是从mc和redis的区别不同点去分析看待两个问题,没有清晰的找到我想要的答案 2.... -
只用redis不用mysql的项目_数据多的时候为什么要使用redis而不用mysql?
2021-01-19 16:35:14通常来说,没有说用Redis就不用MySQL的这种情况。因为Redis是一种非关系型数据库(NoSQL),而MySQL是一种关系型数据库。和Redis同类的数据库还有MongoDB和Memchache(其实并没有持久化数据)那关系型数据库现在常用的... -
redis mysql_数据多的时候为什么要使用redis而不用mysql?
2021-01-18 18:39:25通常来说,没有说用Redis就不用MySQL的这种情况。因为Redis是一种非关系型数据库(NoSQL),而MySQL是一种关系型数据库。和Redis同类的数据库还有MongoDB和Memchache(其实并没有持久化数据)那关系型数据库现在常用的... -
Redis 为什么用跳表而不用平衡树
2016-10-10 22:52:10Redis 为什么用跳表而不用平衡树?本文是《Redis内部数据结构详解》系列的第六篇。在本文中,我们围绕一个Redis的内部数据结构——skiplist展开讨论。Redis里面使用skiplist是为了实现sorted set这种对外的数据结构... -
数据多的时候为什么要使用redis而不用mysql?
2021-01-19 15:22:02数据多的时候为什么要使用redis而不用mysql? 通常来说,当数据多、并发量大的时候,架构中可以引入Redis,帮助提升架构的整体性能,减少Mysql(或其他数据库)的压力,但不是使用Redis,就不用MySQL。 因为Redis的... -
Redis面试题(2020最新版)
2019-12-13 10:38:01文章目录概述什么是RedisRedis有哪些数据类型Redis有哪些优缺点Redis的应用场景为什么要用 Redis /为什么要用缓存为什么要用 Redis 而不用 map/guava 做缓存?Redis为什么这么快持久化什么是Redis持久化?Redis 的... -
为什么要用Redis?Redis为什么这么快?
2020-02-10 20:45:40(以下单线程仅指Redis负责存取这块的线程只有一个,而非Redis中只有一个进程) 我先给个我的结论,单线程的Redis...性能又不会比多线程差,并且,单线程确实不用处理上下文的切换,cpu利用率会比多线程高,这时候采... -
mysql为什么不用跳表_跳表,Redis 为什么用跳表而不用平衡树?
2021-02-08 01:10:04skiplist,顾名思义,首先它是一个list。实际上,它是在有序链表的基础上发展起来的。我们先来看一个有序链表,如下图...也就是说,时间复杂度为O(n)。同样,当我们要插入新数据的时候,也要经历同样的查找过程,从... -
为什么要用redis而不用map做缓存?
2020-09-30 16:27:07以java为例,使用自带的map或者guava实现的是本地缓存,最主要的特点是轻量以及快速,生命周期随着jvm的销毁而结束,并且在多实例的情况下,每个实例都需要各自保存一份缓存,缓存不具有一致性。 使用redis或... -
【Redis】『1』为什么Redis内存不宜过大
2016-05-23 11:36:17redis这个内存数据库,它的高性能、稳定性都是不用怀疑的,但我们塞进redis的数据过多,内存过大,那如果出问题,那它可能会带给我们的就是灾难性。 作者:程超来源:网络|2016-05-23 09:54 这几年的线上业务... -
为什么要用 redis 而不用 map做缓存
2019-07-02 11:35:06以 Java 为例,使用自带的 map 或者 guava 实现的是本地缓存,最主要的特点是轻量以及快速,生命周期随着 jvm 的销毁而结束,并且在多实例的情况下,每个实例都需要各自保存一份缓存,缓存不具有一致性。 使用 redis... -
为什么说Redis单线程效率高
2018-08-29 10:46:27采用单线程,不用去考虑各种加锁释放锁的问题 使用IO多路复用模型,非阻塞IO Redis采用的是基于内存的采用的是单进程单线程模型的 KV 数据库,由C语言编写,官方提供的数据是可以达到100000+的QPS(每秒内查询次数... -
数据多的时候为什么要使用redis而不用mysql?
2020-03-27 11:50:00通常来说,当数据多、并发量大的时候,架构中可以引入Redis,帮助提升架构的整体性能,减少Mysql(或其他数据库)的压力,但不是使用Redis,就不用MySQL。 因为Redis的性能十分优越,可以支持每秒十几万此的读/写操作... -
我为什么用ES做Redis监控,不用Prometheus或Zabbix?
2020-05-16 09:15:00我为什么用ES做Redis监控,不用Prometheus或Zabbix?