一、基本概念
1、Redis是内存数据库(基于内存的K-V存储),用于数据库、缓存、消息中间件。
可以用来减轻对RDBMS的负载,提升Web服务性能。
2、相似的产品还有Memecached,了解Redis与Memecached的基本差异(待补充)
Memcached 非阻塞、基于事件的服务器程序。Memcached基于二阶段Hash,
第一阶段Hash是客户端操作,用来确定Memcached服务器(计算Key的整数Hash整数值,
对服务器总数目取余),用来转发请求;第二阶段Hash是服务端操作,用来确定Key
的值在物理服务器的存储位置。客户端的的Hash算法大多不相同,而服务端的Hash算法都
是一致的。可以猜测在Memecached的体系结构中是基于C/S结构来设计,但是Redis就不是
这个思路。参考一下:http://www.cnblogs.com/hfclytze/p/3613822.html
Memcached的特点:
1)与服务端的通信协议简单
2)基于libevent的事件处理
3)数据存储在内存中,断电后缓存消息、无持久化即无磁盘I/O开销
4) 集群结点之间是不通信的,信息不共享,结点之间不能做到动态负载(完全ES相反啊)
5) Memcached的分布式完全是由客户端决定的(结合二阶段Hash原理)
这种方式在新增结点和删除结点时会非常麻烦,最理想的思路是在新增与删除结点时
能够做到数据的自动负载,结点之间数据自动迁移,客户端完全不用参考并且在迁移完成
之前能够对读写不造成影响。可是Memcached做不到啊。
6)Memcached的数据冗余方式:两个字:没有,但是可以人工实现热备
在集群中做备份服务器,在做第一次Hash时(基本是做两次),将数据写两份,一份写
主机、一份写备机。当然了,这个操作也需要在客户端完成,因为主备机是不通信的。
7)使用slabs的内存分配方式,不使用malloc/free,redis使用jemalloc
二、基本的安装使用及部署
1、Windows环境下的Redis使用
Windows环境下不需要安装,启动服务器与客户端,客户端以命令方式直连服
务端,进行基本的命令操作。可以使用Benchmark可以对Redis进行基本的性能测试,
没有了解的是在Windows环境下如何做成Windows服务。
2、Linux环境下的源码安装、及软件包安装
源码安装的方式,主要的坑是Linux的开发环境主机是没有GCC及基本的编译工具,
并且这种方式的安装需要自写服务但脚本,当然也可以从Util文件下的的安装步骤中生成
这种脚本或者从网上找到一个可用的脚本,适当修改环境变量即可。
软件包的方式,主要的坑是能找到自己想要版本的Redis对应的包,可以使用在线安装
(使用源)或者离线安装的方式(redis + jemalloc)。如果自己能用rpmbuil最好不过了。
3、Redis HA的的搭建及相关配置,Redis服务的管理
主要的配置文件在/etc/redis.conf及/etc/redis-sentinel.conf,前者主要用来配置redis
结点,后都主要用来配置Sentinel来监控集群中的Master状态,及时在Failover的情况下进行
切换。
三、Redis的基本学习
1、Redis的基本数据类型(Strings, Hash, List, Set, Sorted Set)
5种数据类型的基本命令操作、5种数据类型的基本使用场景
2、Redis的事务
3、Redis的发布与订阅
4、Redis的持久化方式RDB与AOF
两种不同的持久化的差异和HA下的配置选择
5、Redis主从复制的原理
6、Sentinel的监控原理