1
mahone3297 2013-10-23 13:40:44 +08:00 1
1. 是,不能保证数据,所以不能做数据库
2. mongodb是数据库 3. 我猜肯定是缓存 4. redis,memcached是缓存,不是数据库。。。 分清了redis不是数据库,上面的问题,就都有答案了。。。 |
2
cloudzhou 2013-10-23 14:02:24 +08:00
@mahone3297 redis 可以不单单是缓存,你可以把 redis 理解为一个长久的 hashtable, sortset 等等,redis 是为了加速特定结构的数据,这些数据访问量非常大,放在数据库压力大。
|
3
Ricepig 2013-10-23 14:06:52 +08:00
redis只是害怕意外停机,可以通过多机的方式避免某机器意外停机
|
4
mongodb 2013-10-23 14:14:39 +08:00
可以做纯数据库,意外停机造成数据丢失的问题可以通过架构解决。
如果拿不准的话可以暂时作为缓存或者某些特定的库和表尝试用redis,抗压能力是杠杠的。 也可以尝试使用一下我,对比下。 |
5
mahone3297 2013-10-23 14:15:03 +08:00
@cloudzhou 对,我知道。是为了加速,所以我把他理解成缓存。。。可能用词不准,但是意思就这个意思,理解就行。反正不是数据库。redis的官网说他是个“数据结构服务”
|
6
tonghuashuai OP |
7
misaka 2013-10-23 14:49:53 +08:00
@mahone3297
Bullshit. Do confirm your answer before answering questions. --- Redis on Ubuntu 10.04 (Lucid) #on sidebar http://library.linode.com/databases/redis/ubuntu-10.04-lucid "/database" http://en.wikipedia.org/wiki/Redis "Type: Document-oriented database" http://redis.io/topics/quickstart Search "database" http://www.redisbook.com/en/latest/ See "数据库" --- Redis is database. |
8
shiny 2013-10-23 14:57:50 +08:00
NoSQL 绝不是要取代传统 SQL,而是传统 SQL 有益的补充。
Redis 的可靠性没有想象中的那么弱,开启 aof 及多机复制,一般应用场合足矣。 |
9
mahone3297 2013-10-23 15:33:33 +08:00
@misaka 看看官网
Redis is an open source, BSD licensed, advanced key-value store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets. 反正不管怎样,我还是不会认为他是database |
10
Livid MOD V2EX 目前在用 Redis 存储一些用户的设置数据(比如 ignore 的主题)。
这样的一个好处是,除了性能好之外,在添加这类新数据的时候,不会涉及任何的 scheme change,也就是说不需要运行 alter table 自然也就不存在锁表问题。 |
11
tonghuashuai OP @Livid
我可以这么理解不:可以使用Redis存一些不经常改动的数据,这样由内存到持久存储同步时,系统异常丢数据的概率就比较小了 |
12
chloerei 2013-10-23 18:14:31 +08:00
@tonghuashuai 应该存经常改动,丢了也没关系或者可以从数据库重建的数据。
|
13
allenwei 2013-10-23 18:37:14 +08:00
Redis最常用的就是cache和queue吧, 还有作为缓冲区的,充分发挥读写快的优势
|
14
lerry 2013-10-23 18:39:22 +08:00
redis怎么不是数据库了,开启 Replication 和 aof 已经很可靠了
用到redis的,我觉得大部分不是作为缓存的 |
15
likuku 2013-10-23 21:22:32 +08:00
@tonghuashuai 你这种就是需要个数据库的缓存,memcached 很适合。
|
16
moroumo 2013-10-23 21:26:41 +08:00
我觉得redis做数据库到没多大问题,对于一般的应用而言。
但是如果数据需要从不同的字段或者维度做统计的话,还是db的好。 |
17
RisingV 2013-10-24 00:51:54 +08:00
一句话,不合适。用aof失去了高可用性本意。redis所有的优势都是建立在对内存复杂数据结构高效的原子操作上,这样就看出aof是一个非常不协调的部分。用snapshot才是好的使用方式。
|
18
Ricepig 2013-10-24 13:40:57 +08:00 via iPhone
@lerry 最大问题来自于redis和db的一个差异:普通db是写入磁盘后才认为操作完成,redis是写入内存就意味操作完成,replica和aof可以认为是后续附加操作。这一点点貌似只是先后的差别,对于数据的可靠性考量还是不一样的。
当然,replica和aof会把丢数据的概率降低很多。 |
19
est 2013-10-24 15:24:40 +08:00
|
20
stackpop 2013-10-24 16:42:03 +08:00
和架构有很大关系。
个人所负责的业务,一般是热数据放在内存中,使用redis等,然后ssd中有一份完整数据,磁盘也有一份。 对于实时服务,一般使用内存中的数据,一旦机器挂掉,就重新从磁盘导出一份进内存。 对于非实时的服务,就没这么讲究了,很有可能就是提交一个map/reduce的任务,让他一直跑,跑完了,结果还是放回内存,等待用户来取。 |