zoukankan      html  css  js  c++  java
  • redis主要用法

    一,全局命令

    #连接redis
    redis-cli -h host -p port -a password auth pwd select dbindex #key
    #查询相关 keys pattern #搜索 ttl key #返回过期时间单位秒 pttl key #返回过期时间单位毫秒 type key #返回类型:string,hash,set,list,zset,none dump key #返回被序列化的值 exists key #检查key是否存在

    #删除
    del key #删除key
    #修改 rename key newkey
    #修改key的名字,如果newkey存在会被替换 renamenx key newkey #仅当newkey不存在时改名 expire key sec expireat key timestamp pexpire key ms-sec #设置剩余时间,单位毫秒 pexpireat key ms-timestamp #设置过期时间戳,单位毫秒 persist key #使key不过期
    move key dbindex #移动key道指定数据库

    #通过key遍历
    scan 0 match vote:vote_nonce:* count 100000 #从0开始,匹配match后面的,共匹配100000条

    二,重要命令

    1,info 

    info
    info memory

    2,monitor

    monitor

    #监控指定键
    redis-cli -h 127.0.0.1 -p 6379 -a 'qwe!123' -n 1 monitor |grep 'vote:vote_detail:1587'

    3,config

    config get *
    config set parameter value
    config resetstat

    4,debug

    debug object key

    三,命令行

    #批量模式删除,参数必须是单引号
    name="$1"
    echo $name
    redis-cli -h 127.0.0.1 -p 6379 -a 'qwe!123' -n 1 --scan --pattern $name| xargs redis-cli -h 127.0.0.1 -p 6379 -a "qwe!123" -n 1 del
    
    #监控monitor
    redis-cli -h 127.0.0.1 -p 6379 -a 'qwe!123' -n 1 monitor |grep 'vote:vote_detail:1587' #参数必须是单引号

     #性能监控

     redis-benchmark-h localhost -p 6379 -c 100 -n 100000#100个并发连接,100000个请求,检测host为localhost 端口为6379的redis服务器性能

    #
    redis-check-aof appendonly.aof #加--fix参数为修复log文件

    redis-check-dump  dump.rdb

    四,高级用法

    1,安全性

    密码修改设置redis.conf里面的requirepass属性给予密码

    requirepass "mima"

    2,主从复制

    做这个操作的时候我准备了两个虚拟机,ip分别是192.168.15.128和192.168.15.133
    通过主从复制可以允许多个slave server拥有和master server相同的数据库副本
    具体配置是在slave上面配置slave
    slaveof 192.168.15.128 6379
    master auth primos
    如果没有主从同步那么就检查一下是不是防火墙的问题
     

    3、事务处理

    redis对事务的支持还比较简单,redis只能保证一个client发起的事务中的命令可以连续执行,而中间不会插入其他client的命令。当一个client在一个连接中发出multi命令时,这个连接会进入一个事务的上下文,连接后续命令不会立即执行,而是先放到一个队列中,当执行exec命令时,redis会顺序的执行队列中的所有命令。
     
    set age 100
    multi
    set age 10
    set age 20
    exec
    get age  #--这个内容就应该是20
    multi
    set age 20
    set age 10
    exec 
    get age #--这个时候的内容就成了10,充分体现了一下按照队列顺序执行的方式
    discard  #取消所有事务,也就是事务回滚
    不过在redis事务执行有个别错误的时候,事务不会回滚,会把不错误的内容执行,错误的内容直接放弃,目前最新的是2.6.7也有这个问题的
    乐观锁
    watch key如果没watch的key有改动那么outdate的事务是不能执行的
     

    4、持久化机制 

    1,redis是一个支持持久化的内存数据库
    • snapshotting 快照方式,默认的存储方式,默认写入dump.rdb的二进制文件中,可以配置redis在n秒内如果超过m个key被修改过就自动做快照
    • append-only file aof方式,使用aof时候redis会将每一次的函 数都追加到文件中,当redis重启时会重新执行文件中的保存的写命令在内存中。
    //RDB方式
    #1,自动化持久,需要配置3个项
    save 60 1000 #每60秒,有超过1000个键变动,就自动调用bgsave
    dbfilename dump.rdb
    dir /usr/local/redis/var
    
    #2,手动调用:会阻塞
    save
    
    #3,手动调用:通过子进程,不会阻塞
    bgsave
    
    //AOF方式
    #1,自动化持久,需要配置(会有很多重复命令,需要重写AOF)
    appendonly yes
    appendfilename appendonly.aof
    
    #2,手动重写AOF
    bgrewriteaof
    
    #3,自动重写AOF
    appendfsync everysec #有3种值:always,everysec,no
    auto-aof-rewrite-percentage 100#aof文件增长比例,当前aof文件比上次重写的增长比例大小 
    auto-aof-rewrite-min-size 1024mb#即最开始aof文件必须要达到这个文件时才触发,后面的每次重写就不会根据这个变量了
    2,从 RDB 持久化切换到 AOF 持久化
    1. 为最新的 dump.rdb 文件创建一个备份。
    2. 将备份放到一个安全的地方。
    3. 执行以下两条命令:
    CONFIG SET appendonly yes #开启了 AOF 功能: Redis 会阻塞直到初始 AOF 文件创建完成为止, 之后 Redis 会继续处理命令请求, 并开始将写入命令追加到 AOF 文件末尾
    CONFIG SET save "" #用于关闭 RDB 功能。 这一步是可选的, 如果你愿意的话, 也可以同时使用 RDB 和 AOF 这两种持久化功能

    //config配置的项,在重启后会被根据配置文件重置,所以需要写到配置文件中
    1. 确保命令执行之后,数据库的键的数量没有改变。

    2. 确保写命令会被正确地追加到 AOF 文件的末尾。

  • 相关阅读:
    Javascript面向对象(三):非构造函数的继承
    Javascript面向对象(二):构造函数的继承
    Javascript 面向对象(一):封装
    .NET面试题系列[12]
    .NET面试题系列[11]
    .NET面试题系列[10]
    .NET面试题系列[9]
    .NET面试题系列[8]
    .NET面试题系列[7]
    .NET面试题系列[6]
  • 原文地址:https://www.cnblogs.com/tkzc2013/p/13569546.html
Copyright © 2011-2022 走看看