zoukankan      html  css  js  c++  java
  • linux redis

    redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

    1 安装

    1.卸载通过yum安装的redis数据库
    yum remove redis -y 
    
    2.通过源码编译安装
        1.下载redis的源代码
            wget http://download.redis.io/releases/redis-4.0.10.tar.gz
        2.解压缩源码
            tar -zxf  redis-4.0.10.tar.gz
        3.进入redis源码目录,编译安装,生成可执行命令
           redis不需要执行configure,因为他已经有了makefile
        4.通过如下2个命令,生成redis的可执行文件  
        make &&  make install
        5.此时已经可以启动redis服务端了
        
    3.安全性能下的启动redis ,在redis.conf中,更改默认端口,添加密码,开启安全模式
    
    #手动创建redis的配置文件
    touch  s17redis.conf 
    #s17redis.conf 内容如下
    [root@master redis-4.0.10]# cat s17redis.conf 
    bind 0.0.0.0
    protected-mode yes
    port 6888
    daemonize yes
    requirepass  alexdsb
    
    4.启动redis服务端,指定配置文件
    redis-server s17redis.conf 
    
    5.测试访问redis服务端
    redis-cli  -p 6888  
    [root@localhost redis-4.0.10]# redis-cli -p 6888 -a 123456
    进入之后,可以通过auth指令,进行redis密码验证
    验证通过后,可以发送ping,得到pong代表redis正常
    
    6.
    过滤出 空白行,以及注释行意外的,有用信息
    grep -v  "^#" redis.conf |  grep -v  "^$"

    学习redis常用命令

    set  key   value  #设置一个键值对
    get   key  #获取key的值
    keys *         查看所有key
    type key      查看key类型
    expire key seconds    过期时间
    ttl key     查看key过期剩余时间        -2表示key已经不存在了
    persist     取消key的过期时间   -1表示key存在,没有过期时间
    
    exists key     判断key存在    存在返回1    否则0
    del keys     删除key    可以删除多个
    dbsize         计算key的数量
    
    lpushx/rpushx                列表存在则添加值,不存在不处理  **** 
    flushdb
    
    redis的哈希结构 ,如同python字典套字典
    
    hmset  new:2  title  "tian qi yu bao"  content "tian qi bu cuo"  redian "jiaodain fangtan "  

    redis持久化  rdb 模式 与aof模式

    rdb 模式持久化   (可能会造成数据丢失)
    第一步,准备一个redis配置文件,  rdbredis.conf  
    写入如下内容
    
    daemonize yes           #后台运行redis 
    port 6379           #redis端口 
    logfile /data/6379/redis.log        #redis日志文件位置
    dir /data/6379/            #指定redis数据文件夹放在哪 
    dbfilename  s17dump.rdb           #指定rdb的数据文件    
    bind 0.0.0.0
    requirepass redhat              #指定redis的密码    
    save 900 1                  #代表  900秒内 有1个修改key的操作,就进行持久化       
    save 300 10                     # 300秒内 有10个修改类的操作,就持久化
    save 60  10000      #  60秒内 有10000个修改类的操作,就持久化
    
    2.通过配置文件启动 redis服务端,支持rdb持久化的 服务端
    #并且可以通过 save指令 手动触发持久化数据 
    
    redis-server  rdbredis.conf 

    aof持久化模式

    aof持久化模式 ,不需要你手动的save触发持久化
    
    配置方式如下
    1.修改redis的配置文件,如下,再次创建一个新的aof配置文件
    touch  aofredis.conf 
    #编辑配置文件,写入如下内容
    
    vim  aofredis.conf 
    #写入如下内容  
    daemonize yes
    port 6379
    logfile /data/6379/redis.log
    dir /data/6379
    appendonly yes   开启持久化的参数,就是这个
    appendfsync everysec  每秒进行一次aof持久化 
    3.支持aof方式的持久化 redis-server aofredis.conf 4.验证 aof持久化, 写入数据后,杀死进程, 再次启动redis,检查数据

    不重启的情况下,切换rdb数据到aof模式下

    1 环境准备  确保是redis2.0 以上的版本
    2 登录此时的rdb数据库,通过两条命令,临时修改切换到aof模式下,也是把rdb数据转化为aof的模式
    127.0.0.1:6379> CONFIG set appendonly yes   #开启AOF功能
    OK
    127.0.0.1:6379> CONFIG SET save ""  #关闭RDB功能
    OK
    3 此时还是临时生效,必须修改配置文件,永久生效

    [root@master redis-4.0.10]# cat rdbredis.conf
    daemonize yes
    port 6379
    logfile /data/6379/redis.log
    dir /data/6379/
    bind 0.0.0.0
    appendonly yes
    appendfsync everysec

    redis 主从同步机制

    1 环境准备3个  redis数据库实例 
    redis-6379.conf 
    port 6379  
    daemonize yes
    pidfile /data/6379/redis.pid
    loglevel notice
    logfile "/data/6379/redis.log"
    dbfilename dump.rdb
    dir /data/6379
    
    redis-6380.conf 
    port 6380
    daemonize yes
    pidfile /data/6380/redis.pid
    loglevel notice
    logfile "/data/6380/redis.log"
    dbfilename dump.rdb
    dir /data/6380
    SLAVEOF 127.0.0.1  6379
        
    redis-6381.conf 
    port 6381
    daemonize yes
    pidfile /data/6381/redis.pid
    loglevel notice
    logfile "/data/6381/redis.log"
    dbfilename dump.rdb
    dir /data/6381
    SLAVEOF 127.0.0.1  6379
    
    2.分别启动三个 数据库 
    
    3.此时已经是一主两从的身份了 
    
    4.可以演示在主库写入数据,从库读取数据的实验
    
    手动切换主从同步的故障(当主库挂掉的时候,怎么办 )
    
    1.模拟主库挂掉,kill杀死主库的进程
    
    2.此时俩从库,群龙捂手
    
    3.手动的切换两个从库的身份,让其中一个 为新的master
    
    选举6381为新的master,只需要在6381下输入 slaveof on one 
    
    然后配置6380为新的slave  ,只需要 在6380下输入 slaveof  127.0.0.1  6381  
    
    4.此时新的一主一从 就好了
    主 6381  
    从6380  
    
    5,可以测试写入数据 


    -- 一条命令 --
    sed 's/6379/6380/g' redis-6379.conf > redis-6380.conf 快速替换加创建新的
  • 相关阅读:
    特征方程
    鸽巢原理
    Python列表与字典
    布尔型
    python字符串
    Python小笔记
    IntelliJ 中Maven pom.xml依赖不生效解决
    IDEA创建servlet,篇末有找不到servlet报404的原因
    jQuery的ajax之验证用户名是否被注册
    jquery之Validata表单验证
  • 原文地址:https://www.cnblogs.com/zhangchen-sx/p/10503450.html
Copyright © 2011-2022 走看看