Redis

一.Redis

redis 全称:remote dictionary server
存储系统:
RDBMS关系型数据库:MYSQL / SQLSERVER
NOSQL非关系型数据库:REDIS/MEMCACHED/MongoDB/HBase
NEWSQL:NewSQL是对所有新型可扩展、高性能数据库的简称NewSQL能够结合传统关系型数据库和NoSQL的优势,且容易横向扩展。

1.1.redis与memcached的区别

如果简单地比较Redis与Memcached的区别,大多数都会得到以下观点:

1.Redis不仅仅支持简单的k/v(key、value)类型的数据,同时还提供list,set,hash等数据结构的存储。

2.Redis支持数据的备份,即master-slave模式的数据备份,redis通过SENTINEL哨兵来进行主从的切换,redis在3.0 开始支持redis cluster (集群),但是可能并不完善

3.Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。在Redis中,并不是所有的数据都一直存储在内存中的。这是和Memcached相比一个最大的区别。

另外:redis单线程,memcached多线程(可以使用多核cpu)

Redis组件:

  • redis-server redis的服务端
  • redis-cli redis的客户端
    command line interface
  • redis-benchmark(压力测试工具)
  • redis-check-dump & redis-check-aof(检查redi持久化工具)
    corrupted RDB/AOF file utilities

1.2.redis 持久化

Redis只会缓存所有的key的信息,如果Redis发现内存的使用量超过了某一个阀值,将触发swap的操作,Redis根据“swappability = age*log(size_in_memory)”计算出哪些key对应的value需要swap到磁盘。然后再将这些key对应的value持久化到磁盘中,同时在内存中清除。这种特性使得Redis可以保持超过其机器本身内存大小的数据。当然,机器本身的内存必须要能够保持所有的key,毕竟这些数据是不会进行swap操作的。
同时由于Redis将内存中的数据swap到磁盘中的时候,提供服务的主线程和进行swap操作的子线程会共享这部分内存,所以如果更新需要swap的数据,Redis将阻塞这个操作,直到子线程完成swap操作后才可以进行修改。

Redis 并发相关介绍:
1 Million small key → string value pairs use ~100MB of memory
Single threaded – but cpu should not to be the bottleneck
Average linux system can deliver even 500K request persecond(50w并发)
如果较好的硬件经过测试支持百万的并发是完全没有问题的

1.3.Redis持久化的两种方式(Redis Persistence)

参考官网:
https://redis.io/topics/persistence

  • Snapshotting快照RDB

The RDB persistence performs point-in-time snapshots of your dataset at specified intervals.
RDB持久性以指定的时间间隔执行数据集的时间点快照

  • AOF(append only file )

the AOF persistence logs every write operation received by the server
AOF持久性记录了服务器接收到的每个写入操作

If you wish, you can disable persistence at all, if you want your data to just exist as long as the server is running.
如果你只是希望服务器正在运行,你的数据就存在,你可以根本不使用持久化。
The general indication is that you should use both persistence methods if you want a degree of data safety comparable to what PostgreSQL can provide you.
一般的迹象是如果你想要一定程度的数据安全性与PostgreSQL可以提供的相比,你应该使用两种持久化方法。
If you care a lot about your data, but still can live with a few minutes of data loss in case of disasters, you can simply use RDB alone.
如果你非常关心你的数据,但是如果发生灾难,还可以忍受几分钟的数据丢失,你可以简单地使用RDB。

在redis服务器启动用于恢复数据时,会优先使用aof

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载地址:http://gnucto.blog.51cto.com/3391516/998509 Redis与Me...
    Ddaidai阅读 21,465评论 0 82
  • NOSQL类型简介键值对:会使用到一个哈希表,表中有一个特定的键和一个指针指向特定的数据,如redis,volde...
    MicoCube阅读 4,058评论 2 27
  • 1.1 资料 ,最好的入门小册子,可以先于一切文档之前看,免费。 作者Antirez的博客,Antirez维护的R...
    JefferyLcm阅读 17,110评论 1 51
  • Redis杂谈 Redis是近年来发展迅速的内存数据库,网上也已经有多Redis的文章。但不管是英文还是中文,多数...
    迷失于重逢阅读 1,583评论 0 14
  • 彩袖殷勤捧玉钟,当年拚却醉颜红。舞低杨柳楼心月,歌尽桃花扇底风。从别后,忆相逢,几回魂梦与君同。今宵剩把银釭照,犹...
    月亮像银子阅读 350评论 1 0