zoukankan      html  css  js  c++  java
  • redis教程(整理中)

    一、redis简介

      1、Redis:键值对类型的内存数据库;应用于高并发和实时请求的场景;
      2、Redis常用数据类型:

        (1) string(基本数据类型)    
        (2)hash 注:hash中的数据(key-value)只能为字符串类型
        (3)list
        (4)set 不重复,无序
        (5)sorted set ,不重复,有序
      3、特点:
        (1)高性能 (读速度11W次/s,写速度约8W次/s)
        (2)原子性 (可保证数据的准确性)
        (3)持久存储(两种方式:RDB快照,AOF日志)
        (4)主从结构(master-slave,负载均衡,高可用)
        (5)支持集群(3.0版本)

    二、部署

    1、单机部署

    (1)安装依赖

    yum -y install cpp binutils glibc glibc-kernheaders glibc-common glibc-devel gcc make

    (2)下载redis的安装包,然后解压到指定目录,编译、配置

    # tar -zxvf redis-3.0.0.tar.gz  -C  /usr/local
    # mv redis-3.0.0 redis
    # cd redis
    # make
    # make install
    View Code

    (3)修改配置文件

    # cp redis.conf /etc
    # vi /etc/redis.conf               #修改如下两个参数即可
    
    daemonize yes                    #设置为后台进程
    logfile "/usr/local/redis/log"   #设置日志目录
    View Code

    (4)服务启动与关闭

    启动redis服务:redis-server /etc/redis.conf
    连接到redis中:redis-cli -h 127.0.0.1 -p 6379
    停止redis服务:redis-cli shutdown

    2、集群部署

    (1)集群规划

      要让集群正常工作至少需要3个主节点,每个主节点对应需要一个从节点,因此在这里我们要创建6redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下(限于个人电脑配置,仅用一台机器进行模拟,生产环境可以参考):

    192.168.1.160:7000
    192.168.1.160:7001
    192.168.1.160:7002
    192.168.1.160:7003
    192.168.1.160:7004
    192.168.1.160:7005
    View Code

    (2)下载、解压、编译,参考单机模式

    下载地址: http://download.redis.io/releases/redis-3.0.0.tar.gz
    # tar -zxvf redis-3.0.0.tar.gz -C /usr/local            #与单机模式相同,注意安装依赖
    # mv redis-3.0.0.tar.gz redis3.0
    # cd /usr/local/redis3.0
    # make
    # make install
    View Code

    (3)创建集群所需的目录

    mkdir -p /usr/local/cluster
    cd /usr/local/cluster
    mkdir 7000
    mkdir 7001
    mkdir 7002
    mkdir 7003
    mkdir 7004
    mkdir 7005
    View Code

    (4)修改配置文件

    # cp /usr/local/redis3.0/redis.conf  /usr/local/cluster
    # vim redis.conf
    ##修改配置文件中的下面选项
    port 7000
    daemonize yes
    cluster-enabled yes
    cluster-config-file nodes.conf
    cluster-node-timeout 5000
    appendonly yes
    ##修改完redis.conf配置文件中的这些配置项之后把这个配置文件分别拷贝到7000/7001/7002/7003/7004/7005目录下面
    cp /usr/local/cluster/redis.conf /usr/local/cluster/7000
    cp /usr/local/cluster/redis.conf /usr/local/cluster/7001
    cp /usr/local/cluster/redis.conf /usr/local/cluster/7002
    cp /usr/local/cluster/redis.conf /usr/local/cluster/7003
    cp /usr/local/cluster/redis.conf /usr/local/cluster/7004
    cp /usr/local/cluster/redis.conf /usr/local/cluster/7005
    
    #注意:拷贝完成之后要修改7001/7002/7003/7004/7005目录下面redis.conf文件中的port参数,分别改为对应的文件夹的名称
    View Code

    (5)启动、验证

    #依次启动各个Redis实例的命令如下:
    cd /usr/local/cluster/7000
    redis-server redis.conf
    cd /usr/local/cluster/7001
    redis-server redis.conf
    cd /usr/local/cluster/7002
    redis-server redis.conf
    cd /usr/local/cluster/7003
    redis-server redis.conf
    cd /usr/local/cluster/7004
    redis-server redis.conf
    cd /usr/local/cluster/7005
    redis-server redis.conf
    #验证:
    ps -ef|grep redis     #若有cluster模式的提示,说明成功
    View Code

    (6)创建集群

    #安装依赖,否则会报错
    yum -y install ruby rubygems
    gem install redis
    #创建集群
    cd /usr/local/redis3.0/src
    ./redis-trib.rb  create --replicas 1 192.168.1.160:7000 192.168.1.160:7001 192.168.1.160:7002 192.168.1.160:7003 192.168.1.160:7004 192.168.1.160:7005
    #根据提示输入yes,集群创建完毕会有提示
    View Code

    (7)启动集群

    # redis-cli -c -p 7000
    #说明:-c指明使用集群的客户端,-p指明端口
    View Code

    3、集群的维护

    (1)动态添加节点:
    主节点:创建一个空主节点后,需将某些哈希槽移动到这个空节点里面
    从节点:创建一个空节点后,把这个新节点设置成集群中某个主节点的复制品。
    (2)动态删除节点:
    主节点:先转移哈希槽,然后删除;
    从节点:直接删除

    三、Redis理论知识

    1、数据库的特点

    (1)多数据库 :默认从0开始16个,不支持自定义;(可修改数据库数目与select切换数据库,用的不多)
    多个数据库之间并不是完全隔离的
    (2)flushall 与 flushdb
    flushall:清空所有数据库中数据;
    flushdb:清空当前数据库中的所有数据
    (3)注意:redis数据库中没有表,如果想要获取某一类型的数据的话,需要提前对这一批数据的key进行有意义的定义

    2、基本命令:

    keys 表达式(?,* ,[],?) 获得符合规则的键名称
    exists key 判断一个键是否存在
    del key 删除键
    del key1 key2 一次删除多个键
    获得键值的数据类型type
    返回值可能是这五种类型(string,hash,list,set,zset)
    注意:redis的命令不区分大小写,键区分大小写

    3、常见数据类型的操作命令

    (1)String

    (2)hash

    (3)list

    (4)set

    (5)sorted set

    4、实用tips

    (1)set命令:如果 key 已经持有其他类型值, SET 就覆盖旧值,无视类型。
    (2)条件查询:redis本身不支持条件查询,但是可以利用reids的一些特性实现类似的条件查询

    (3)list使用最频繁,lpush,lpop String次之;

    四、Redis进阶

    1、expire

    2、事务
    3、sort

    4、发布/订阅模式

    5、pipeline

    6、持久化

    7、安全策略:

    8、sentinel

    9、主从

    10、应用场景

    11、优化策略

     五、补充

    1、一致性哈希

    参考:http://www.360doc.com/content/12/0412/17/597197_203070560.shtml

       http://blog.csdn.net/ymr0717/article/details/51909225

     先列出题纲,后期待续。。。

  • 相关阅读:
    【题解】【模板】矩阵级数
    【题解】P2048 [NOI2010]超级钢琴
    【题解】[APIO2009]会议中心
    【题解】[P4178 Tree]
    【题解】扑克牌游戏
    【题解】quake
    【题解】cycle
    从不浪费——分治总结
    【题解】Painting Fence
    【题解】[CJOI2019Chebnear]
  • 原文地址:https://www.cnblogs.com/chinas/p/5847765.html
Copyright © 2011-2022 走看看