zoukankan      html  css  js  c++  java
  • 我所了解的Redis

    一、基本概念

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

  • 相关阅读:
    axios
    es6
    $route监听路由变化
    容易挂
    自定义全局组件/插件
    eslintrc.js
    dev-server.js
    webpack-dev-server.js
    怎么消除间隔间的空白字符
    es6语法
  • 原文地址:https://www.cnblogs.com/jiuyue/p/4870018.html
Copyright © 2011-2022 走看看