【Redis】Redis入门了解
Redis
Redis是一个速度很快的非关系数据库,可存储key和5种不同类型的value的映射关系,可以将存在内存的键值对数据持久化到硬盘,可以使用复制特性扩展读性能,还可以使用客户端分片来扩展写性能。
与其他数据库和软件的对比
为什么用?
1、memcache只能用append将数据添加到已有字符的末尾,而删除则是通过黑名单来隐藏列表里的元素,从而避免对元素执行读取、更新、写入(包括在一次数据库查询之后执行的memcached写入)等操作。Redis的LIST和SET可以直接添加或删除元素。
2、使用Redis可以让代码变得简短、易懂、易维护,代码运行速度更快,它的效率和易用性比关系数据库要好的多。
3、数据库的一个常见用法是存储长期的报告数据,并将这些报告数据用作固定时间范围内的聚合数据。数据库对表的操作频繁,速度慢,而Redis可以使用原子的INCR命令计算聚合数据,因Redis数据存在内存,所以执行速度很快。
4、另外Redis可以避免写入不必要的临时数据,改善程序的性能。
Redis应用场景:
目前全球最大的Redis用户是新浪微博。在新浪微博Redis的部署场景很多,大概分为如下两种:
1、应用程序直接访问Redis数据库
2、应用程序直接访问Redis,只有Redis访问失败时才访问MySQL
一、Redis基础:
开源,Key-Value数据库,提供多种语言的API。
1、5种数据类型
2、持久化
通常,Redis将数据存储于内存中,或被配置为使用虚拟内存,通过两种方式可以实现数据持久化:使用截图方式,将内存中数据不断写入磁盘;或使用类似MySQL的日志方式,记录每次更新的日志。
3、主从同步
Redis支持将数据同步到多台从库上,这种特性对提高读取性能非常有益。
4、Redis适用场景
取最新N个数据(如:网站最新文章)
排行榜应用,取TOP N操作
精准设定过期时间
利用INCR,DECR命令构建计数器系统
Uniq操作,获取某段时间所有数据排重值
实时系统,反垃圾系统
Pub/Sub构建实时消息系统
构建队列系统
缓存(性能优于Memcached),数据结构多样化
当数据库访问过大的时候,缓存出现了。数据访问方式发生变化:
以前:
现在:
二、如何保证内存中的数据不丢失?
持久化,将内存的数据同步到磁盘
三、集群
主从复制
分片:把数据分散在不同的主机里面保存
有集群,机器宕机怎么办?
1、容灾
2、Sentinel:
是个独立进程
监控redis主从主机(类似ping)
如果一个主机出现情况,则通知客户端:
(1)如果master宕机,选举一个slave作为新的master,转移槽
(2)如果slave宕机,通知master
3、Cluster通过操作哈希槽实现
总结
基本了解,希望可以帮到您。
还没有评论,来说两句吧...