一、什么场景?具体哪儿用了?为什么用?【重点】

    场景:①数据量小  ②查询频繁
    具体:首页广告
    为什么用:因为mysql走的是硬盘顶不住高并发;redis走的是内存;

二、什么redis?

    redis是c语言编写的高性能(读110000次/s,写81000次/s)的k-v形式的数据库,数据存储在内存中

三、redis的安装和启动

    1、安装c语言环境
        yum install gcc-c++
    2、上传并解压
        cd /usr/upload
        tar -zxvf redis-3.0.0.tar.gz 
    3、编译并安装
        cd /usr/upload/redis-3.0.0
        make
        make install PREFIX=/usr/local/redis
    4、拷贝并修改配置文件
        cp /usr/upload/redis-3.0.0/redis.conf /usr/local/redis/bin
        vim /usr/local/redis/bin/redis.conf:
            daemonize yes
    5、启动和关闭
        启动:
            cd /usr/local/redis/bin
            ./redis-server redis.conf
        测试:
            cd /usr/local/redis/bin
            ./redis-cli [-h 127.0.0.1 -p 6379]
        关闭:
            ./redis-cli [-h 127.0.0.1 -p 6379] shutdown 

四、基本命令

    keys *:查看所有key值
    exists:判断key值是否存在
    expire和ttl:设置和查看key的失效时间
    incr和decr:自增和自减

五、redis的多数据库实例

    1、redis实例中提供了下标是0-15的16个数据库,不能修改下标,可通过select切换
    2、清空数据库
        flushdb:清空当前数据库的数据
        flushall:清空所有数据库的数据

六、持久化【重点】

    1、RDB:默认[数据]

        策略:
            save 900 1
            save 300 10
            save 60 10000
        
        缺点:不能保证数据的完整性
        优点:不影响性能

        实验:
            ①删除dump.rdb文件
            ②set str sb
            ③./redis-cli shutdown---->数据持久化

    2、AOF:[命令]

        策略:
            # appendfsync always
            appendfsync everysec
            # appendfsync no

        优点:保证数据的完整性
        缺点:影响性能

        实验:
            ①设置appendonly为yes
            ②set str1 sb
            ③等待一秒---->数据持久化

七、主从复制

    1、过程

        ①从往主发送sync命令
        ②主往从发送rdb文件
        ③主往从发送命令

    2、配置步骤

        主:无须配置
        从:slaveof masterip masterport

    3、测试

        ①往主写数据,观察从是否同步
        ②关闭主,往从写数据(主死了从只能读)

八、redis集群

    1、为什么节点之间要相互ping-pong?

        投票容错

    2、为什么要投票容错?

        集群中有一个节点fail整个集群都会fail

    3、为什么集群中有一个节点fail整个集群都会fail?为什么client连哪一台都一样?

        redis集群中有16384个槽,分给了3个节点,存取数据时:crc16(key)%16384=0~16383

    4、redis集群是多少台?

        投票容错超过半数:3台        高可用:3台

    5、搭建步骤

①删除redis中的持久化文件
            cd /usr/local/redis/bin
            rm -f dump.rdb
            rm -f appendonly.aof
        ②开启集群
            vim /usr/local/redis/bin/redis.conf:
                cluster-enabled yes
        ③拷贝6个节点
            cd /usr/local
            mkdir redis-cluster
            cp -r /usr/local/redis /usr/local/redis-cluster/redis-7001
            cp -r /usr/local/redis /usr/local/redis-cluster/redis-7002
            cp -r /usr/local/redis /usr/local/redis-cluster/redis-7003
            cp -r /usr/local/redis /usr/local/redis-cluster/redis-7004
            cp -r /usr/local/redis /usr/local/redis-cluster/redis-7005
            cp -r /usr/local/redis /usr/local/redis-cluster/redis-7006
        ④修改端口号
            vim /usr/local/redis-cluster/redis-7001/bin/redis.conf:
                port 7001
            vim /usr/local/redis-cluster/redis-7002/bin/redis.conf:
                port 7002
            vim /usr/local/redis-cluster/redis-7003/bin/redis.conf:
                port 7003
            vim /usr/local/redis-cluster/redis-7004/bin/redis.conf:
                port 7004
            vim /usr/local/redis-cluster/redis-7005/bin/redis.conf:
                port 7005
            vim /usr/local/redis-cluster/redis-7006/bin/redis.conf:
                port 7006
        ⑤编写启动集群的脚本
            cd /usr/local/redis-cluster/redis-7001/bin
            ./redis-server redis.conf
            cd /usr/local/redis-cluster/redis-7002/bin
            ./redis-server redis.conf
            cd /usr/local/redis-cluster/redis-7003/bin
            ./redis-server redis.conf
            cd /usr/local/redis-cluster/redis-7004/bin
            ./redis-server redis.conf
            cd /usr/local/redis-cluster/redis-7005/bin
            ./redis-server redis.conf
            cd /usr/local/redis-cluster/redis-7006/bin
            ./redis-server redis.conf

            chmod 755 start-all.sh 
            ./start-all.sh
            ps -ef | grep redis
        ⑥安装ruby环境
            yum install ruby
            yum install rubygems
            cd /usr/upload
            gem install redis-3.0.0.gem 
            cd redis-3.0.0/src
            ll *.rb
        ⑦使用ruby脚本搭建redis集群
            cd /usr/upload/redis-3.0.0/src
            ./redis-trib.rb create --replicas 1 192.168.61.131:7001 192.168.61.131:7002 192.168.61.131:7003 192.168.61.131:7004 192.168.61.131:7005  192.168.61.131:7006
        ⑧测试
            1)测试存储数据
                ./redis-cli -c -p 7001
            2)测试是否高可用
                cluster nodes
                关闭7001
                cluster nodes

九、redis的五种数据类型

                           赋值                                取值                              删除                              特点            
    string           set k v                               get k                              del                              String 
    hash          hset k kv                           hget k k                        hdel k k                            Map 
    list             lpush/rpush k v...             lrange  k 0 -1               lrem k -2 v                      LinkedList
    set               sadd k v...                      smembers k                  srem k v                           Set 
    zset           zadd k 2 v...           zrange k 0 -1 with scores        zrem k v                        Sort Set 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐