引言:
在大型分布式项目中,会存在大量的查询请求,在数据库层面会进行扩容、分库分表、集群化主从复制等操作进行负载能力的提升。但是DB层面的磁盘IO还是比较高昂的操作,如下图(计算机硬件延迟对比图):
所以在分布式领域出现了很多NoSQL方案去优化大型网站等项目的查询请求。
NoSQL百花齐放,如何选择?总体上这些NoSQL主要用于解决以下几种问题:
1.少量数据存储,高速读写访问。
2.海量数据存储,分布式系统支持,数据一致性保证,方便的集群节点添加/删除。
3.这方面最具代表性的是dynamo和bigtable 2篇论文所阐述的思路。前者是一个完全无中心的设计,节点之间通过gossip方式传递集群信息,数据保证最终一致性,后者是一个中心化的方案设计,通过类似一个分布式锁服务来保证强一致性,数据写入先写内存和redo log,然后定期compat归并到磁盘上,将随机写优化为顺序写,提高写入性能。
4.Schema free,auto-sharding等。比如目前常见的一些文档数据库都是支持schema-free的,直接存储json格式数据,并且支持auto-sharding等功能,比如MongoDB。
所以在分布式项目里,越来越多的性能需求在 all in memory层面,这也是redis最适合的场景,当然,它也支持持久化。
本专题围绕大型分布式项目中对缓存技术的使用展开,内容会涉及redis以及memcached在网络IO模型、内存管理机制、集群方案、all in memory与persistence选择、主从复制、性能优化、pipelining、LRU等细节。
简介:本篇博客主要讲redis入门安装以及使用,以及常用命令介绍。
目录:
1.redis安装使用
2.常用命令
正文:
redis简介:
Redis是一个使用ANSI C编写的开源、支持网络、基于内存、可选持久性的键值对存储数据库。从2015年6月开始,Redis的开发由Redis Labs赞助,而2013年5月至2015年6月期间,其开发由Pivotal赞助。在2013年5月之前,其开发由VMware赞助。根据月度排行网站DB-Engines.com的数据显示,Redis是最流行的键值对存储数据库。
官方网站:https://redis.io/
unix下安装使用:
首先进入https://redis.io/站点,点击download导航,进入到installation提示
打开linux或者macos终端,按照Installation提示命令依次输入即可成功安装至unix系统下
安装成功以后会有redis文件夹出现:
上述是我电脑上安装redis以后的文件目录结构,我的习惯是复制一份conf,之后启动server端使用自己的配置文件
具体方法如下:
-> sudo cp redis.conf xx/xx/test.conf
之后用redis-server test.conf启动server服务
出现上图表示redis服务已经成功启动,端口是6379,pid是9289(kill9忍不住?)
server端成功启动以后就另启一个终端,进入redis-client端
上图右侧就是redis-cli端,进入127.0.0.1:6379之后就可以使用redis命令进行通讯了。
以上就完成了redis在macos下的安装与使用,linux同理啦,windows的话更简单,下载一下zip包,解压,就不多介绍了.
关于redis更多命令,可以直接在redis官网的Documentation中查找,里面内容很全面,每个数据操作的命令均有时间复杂度说明以及数据结构选型说明等,博主就不一一示范了,感兴趣的可以自己尝试。
最后讲一下redis服务端关闭的方法:
直接在cli端终端输入shutdown即可,如果shutdown异常,ps aux|grep redis还出现redis服务,多半是因为dump.rdb没有权限,可以 sudo chmod 757 6379或者进入到redis.conf指定的dir路径里 ls -l查看权限,给dump.rdb添加g+w即可,测试环境还有一种暴力的方式就是kill -9 pid。这一块东西涉及到conf配置文件详解以及rdb aof等同步方式。本节不细讲,留待后续章节进行原理分析,本节就简单介绍一下redis入门。
以后章节将介绍redis的网络IO模型(epoll)以及集群方案(cluster、客户端hash等)、内存使用效率(对molloc free的封装)、异步主从复制(SYNC PSYNC rdb aof等)以及跟memcached对比(memcached Slab Allocation内存管理与redis molloc封装在内存利用率 性能上对比等)、LRU淘汰、事务实现等实践与原理。