Redis

  一、问题

   1. 什么是redis?哪儿用了redis?为什么用?

     什么是redis:Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。redis是将数据存放到内存中,由于内容存取速度快所以redis被广泛应用在互联网项目中

     哪用了:首页轮询广告

     为什么用:因为mysql是走硬盘,顶不住高并发;redis是走内存;

    2.reids的持久化

       Redis的高性能是由于其将所有数据都存储在了内存中,为了使Redis在重启之后仍能保证数据 不丢失,需要将数据从内存中同步到硬盘中,这一过程就是持久化。

      Redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式。可以单独使用其中一种或将二者结合用

    3.redis主从复制

     主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。 前者称为主节点(master),后者称为从节点(slave); 数据的复制是单向的,只能由主节点到从节点。 默认情况下,每台Redis服务器都是主节点,且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。

   4. redis集群是多少台?

       Redis集群至少需要6台服务器( 投票容错超过半数:3台       高可用:3台)

   5.为什么集群中有一台挂了,则整个集群都挂了呢?

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

二、Redis基本命令

    key * :查看所有key

    expire和ttl :设置和查看key的失效时间

    exists:判断key值是否存在

    incr和decr: 自增和自减

三、Redis的安装和启动

 1、安装
        yum install gcc-c++
        tar -zxvf redis-3.0.0.tar.gz
        cd /usr/upload/redis-3.0.0
        make
        make install PREFIX=/usr/local/redis
    2、启动和关闭
        cp /usr/upload/redis-3.0.0/redis.conf  /usr/local/redis/bin
        vim /usr/local/redis/bin/redis.conf:
            daemonize yes
        启动:
            ./redis-server redis.conf
        关闭:
            ./redis-cli -h 127.0.0.1 -p 6379 shutdown

四、持久化 

 1、RDB:默认(数据)
        策略:
            900 1
            300 10
            60 10000
        缺点:不能保证数据的完整性
        优点:不形象性能
        实验:
            1.删除dump.rdb
            2.set str abc
            3../redis-cli shutdown(生成持久化文件)

    2、AOF:(命令)
        策略:
            #appendfsync always
            appendfsync everysec
        优点:保证数据完整性
        缺点:影响性能
        实验:
            1.设置appendonly为yes
            2.set str abc
            3.等待1秒打开appendonly.aof
 

五、主从复制过程

 主从复制过程如下图:

复制过程说明:

1、slave 服务启动,slave 会建立和master 的连接,发送sync 命令。

2、master启动一个后台进程将数据库快照保存到RDB文件中

3、master 就发送RDB文件给slave

4、slave 将文件保存到磁盘上,然后加载到内存恢复

5、master把缓存的命令转发给slave

注意:主死了,从只能读

六、Redis集群的搭建

 1.redis-cluster框架图

 架构细节:

(1)所有的Redis彼此互联(PING-PONG机制),节点的fail是通过集群中超过半数的节点检测时才生效。

 (2)存取数据时连接任意节点都可以,但集群中有一个节点fail整个集群都会fail

    Redis 集群中内置了 16384 个哈希槽,当需要在Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点

 2.集群搭建步骤

 1、安装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
        2、拷贝6台redis,并启动
            1)必须删除dump.rdb和appendonly.aof文件
            2)拷贝6个节点
                 cp -r /usr/local/redis /usr/local/redis-cluster/redis-7001
                 ... ...
            3)修改配置文件
                port 7001
                cluster-enable yes
                ... ...
            4)创建启动脚本(v-y-p)
                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

       3、使用ruby脚本搭建redis集群
            cd /usr/upload/redis.3.0.0/src
            ./redis-trib.rb create --replicas 1 192.168.116.134:7001 192.168.116.134:7002 192.168.116.134:7003 192.168.116.134:7004 192.168.116.134:7005  192.168.116.134:7006
       4、测试
            ./redis-cli -c -p 7001

七、Redis的五种数据类型 

Redis的五种数据类型
类型赋值取值删除
Stringset k v get k del
hashhset k kvhget k k hdel k k
listlpush/rpush k v..lrange k 0 -1lrem k -2 v
setsadd k v...smembers ksrem k v
zsetzadd k 59 v... zrange k 0 -1 withscoreszrem k v

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值