Redis 快速入门指南

1、redis 介绍
Redis:Remote Dictionary Server 远程字典服务器
    是完全开源免费的,用 C 语言编写的,遵守 BSD协议,是一个高性能的 (key/value) 分布式内存数据库,基于内存运行,并支持持久化的 NoSQL 数据库,是当前最热门的 NoSql 数据库之一,也被人们称为数据结构服务器。

2、安装
     wget http://download.redis.io/redis-stable.tar.gz
     tar -zxvf redis-stable.tar.gz
     cd redis-stable
     make
     make install
    注意:redis包需要依赖gcc,本地机器若没有安装gcc需要安装。

3、功能和比较:
    Redis 与其他 KV缓存产品的优点: 
    Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载使用
    Redis 不仅支持简单的KV类型数据,同时还提供list,set,zset,hash等数据结构存储。
    Redis支持数据备份,即master-slave模式的数据备份。

    redis的场景:

    发布,订阅消息系统
    定时器,计数器

4、操作Redis
    在Redis的安装目录中复制 redis.conf ,并修改redis.conf里面,设置 daemonize  yes,开启后台进程。
启动:
    redis-server redis.conf &
连接Redis:     
    redis-cli -p 6379
    输入ping ,返回PONG,则Redis正常。
关闭:
    单实例关闭 redis-cli shutdown
    多实例关闭指定端口 redis-cli -p 6379 shutdown

5、Redis 其他内容
    1,redis是单进程的。 

     单进程模型来处理客户端的请求。对读写等事件的响应是通过对epoll函数的包装来做到的。Redis的实际处理速度完全依靠主进程的执行效率,Epoll是Linux内核为处理大批量文件描述符而作了改进的epoll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。
     2,默认16个数据库,类似数组下标,默认从零开始。
     3,Select +数据库id 切换数据库
     4,Dbsize 查看当前数据库的key
     5,Flushdb:清空当前库
     6,Flushall:清空全部库
     716个数据库统一密码管理
     8,Redis索引也是从零开始
     9,默认端口6379

6、Redis持久化策略
持久化策略:
    rdb:
        fork一个进程,遍历hash table,利用copy on write,把整个db dump保存下来。save, shutdown, slave 命令会触发这个操作。粒度比较大,如果save, shutdown, slave 之前crash了,则中间的操作没办法恢复。

    aof:
        把写操作指令,持续的写到一个类似日志文件里。持续的用日志记录写操作,crash后利用日志恢复。

7、Redis 配置
Redis Replication 主从集群
     主从复制,主机数据更新后根据配置和策略,自动同步到备机的 master/slaver 机制,Master 以写为主, Slave 以读为主。
     读写分离,容灾恢复
原则:
     1:配从(库)不配主(库)
     2:从库配置,修改从库的配置文件redis.conf,slaveof +主库ip +主库redis端口号 ,例如 slaveof 127.0.0.1 6370
    {注意,若在同一台机器下开启两个redis实例进行模拟,需要修改Redis实例的配置文件,以保证两个redis实例的pid文件名,端口号,log文件名dump.rdb文件名,aof文件等不同}
     redis.conf配置文件的修改 ,开启deamonize yes,pid文件名[pidfile],端口[port ],Log文件名[logfile],dump.rdb文件名[dbfilename] [appendfilename]
     3:开启主redis服务,根据2的命令修改从Redis的配置文件,并启动从Redis服务。
          info replication 查看当前redis数据库的主从状态

redis-sentinel(哨兵机制)集群

    配置主Redis的 sentinel.conf
    sentinel monitor <master-name> <ip> <redis-port> <quorum>
    例如:
    sentinel monitor masterip 127.0.0.1 6379 1
    host6379 :被监控数据库名字,自定义数据库名称
    ip地址 redis端口号
    最后一个数字1,表示主机挂掉后salve投票看让谁接替成为主机,得票数超过多少后成为主机。
    启动Redis服务,以及哨兵服务
    Redis-sentinel sentinel.conf

    配置从Redis的sentinel.conf
    假设主Redis的Ip为 192.168.12.2 port为6379 那么从Redis的sentinel.conf
    sentinel monitor masterip 192.168.12.2 6379 1
    启动哨兵模式
    Redis-sentinel sentinel.conf

    当主库宕机之后,可以通过哨兵模式,自动选取其中的某一个从库作为主库。编辑redis-sentinel的client-reconfig-script脚本,client-reconfig-script脚本如果配置了,在sentinel failover时会执行,用于手动做一些主从切换的操作,比如切换VIP(虚拟IP)指向,发送短信通知等。
    sentinel.conf的配置文件
    sentinel client-reconfig-script mymaster /var/redis/reconfig.sh
    添加host实现ip指向的定义:
    #vim /etc/hosts  
    10.66.1.9  redis.test.com  
    编辑/var/redis/reconfig.sh 脚本,实现主从切换的操作。
echo "Master move from $4:$5 to $6:$7" >> /Data/logs/redis/sentinel.log  
sed -i '/redis.zhibo.com/d' /etc/hosts  
sed -i '$a '$6' redis.zhibo.com' /etc/hosts
    client-reconfig-script脚本会在选举出做switch操作的sentinel机上执行一次,在其他运行sentinel的集群成员机上也会各执行一次,这样所有集群机上访问redis.test.com 这个域名都会指向正常运行的redis的ip上去。

redis 性能分析:
    修改配置文件中的最大内存
    maxmemory
    修改配置文件中的内存策略
    LRU means Least Recently Used
    LFU means Least Frequently Used

    Redis的INFO – Redis命令可以查看当前内存使用情况
    提前做好内存容量规划,防止out of max memory;通常来讲实际内存达到最大内存的3/4时就要考虑加大内存或者拆分数据。
    参考如下文件,https://redis.io/topics/benchmarks 
    查看机器的redis读写速率
    redis-benchmark -n 1000000 -t set,get -P 16 -q
    SET: 1145475.38 requests per second
    GET: 1536098.25 requests per second
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值