我所了解的Redis

时间:2022-05-31 16:33:15

一、基本概念

  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的监控原理