redis专题一:why redis ?
一、NoSQL
现在互联网应用其中有两个特点:(1)海量用户(2)不可避免地高并发。常常因为这样,我们网站或者服务器将面临崩溃的风险。而多用户、高并发只是现象,究其根源,罪魁祸首就是关系型数据库,数据访问这一块出现了问题。在数据访问中,有哪些因素影响呢?
(1)性能瓶颈:磁盘IO性能低下;因为我们CPU的数据交换和缓存(Cache)做,Cache的数据交换和内存做,内存的数据交换和磁盘做,提供的基本数据基本都在硬盘上,一层一层传递,磁盘性能远达不到我们想要的要求;
(2)扩展瓶颈:数据库不仅是存数据,还要存数据之间的关系,常常数据间的关系比较错综复杂,也不便于大规模集群。
怎么解决?(1)降低磁盘IO,用内存存储解决(2)数据关系越简单越好,甚至不存储关系,只存储数据。这其中就包含一种理念:NoSQL。
什么是NoSQL呢?即Not-only SQL,泛指非关系型数据库,注意,它并不能替代关系型数据库,而是关系型数据库的补充。我们使用NoSQL的场景,常常也是为了应用于开篇提及的海量用户高并发的场景。
常见的NoSQL数据库有哪些呢?Redis,memcache,HBase,MongoDB。我们举一个电商的商品例子,来简单说明一下。比方说商品的基本信息,如名称、价格等,这种信息全局一份,也比较固定,首选肯定是MySQL;商品的附加信息,如商品详情,描述评论等,大段大段地文字,这种就推荐擅长文档处理地MongoDB;商品的图片,一般都会有专用的存储未知,我们放在分布式文件系统中;商品的检索,搜索关键字,推荐ES等;还有一种热点信息,这类信息可能随着时间会变,但是高频访问,这种推荐Redis、MongoDB、Tair等。
也就是说,我们对外访问的时候,可能就变成了这样:MySQL集群 --> NoSQL集群 -->对外访问
二、Redis
2.1 什么是Redis?
Remote Dictionary Server,一个C语言编写的键值对(key-value)数据库。
2.2 主要特征
(1)数据间没有必然的关系;(2)单线程机制进行工作;(3)高性能;
(4)多数据类型支持,如string、hash,list,set,sorted_set等(后面专题会详细描述);
(5)持久化支持,主要进行数据灾难恢复(比方说机器断电了);
2.3 主要应用
(1)为热点数据做加速查询;(2)任务队列,比方说秒杀、抢购等;(3)即时信息查询,比方说排行榜、在线人数统计等;
(4)时效信息控制,如优惠券,验证码等;(5)分布式数据共享,如session分离;(6)分布式锁;(7)消息队列
2.4 以windows版本客户端学习启动为例
启动server:redis-server.exe redis.windows.conf
启动客户端:redis-cli.exe -p 6379