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 文件的末尾。

  • 相关阅读:
    UUID工具类
    jax-rs 标准以及 结合 resteasy的使用
    Mina.Net实现的断线重连
    Mina.Net实现的UDP协议消息收发Demo
    MySql 比Replace Into更适合的用法,外加SqlServer的方式。
    MySql【Insert Select Not Exist】判断记录再添加值的方案
    MySql中存储过程中的@变量总是无法执行,提示Parameter '@XXX' must be defined
    Go语言使用Beego的ORM插入Mysql后,时区不一致的解决方案
    Go语言中Path包用法
    C#(WPF和WinForm)在普通类中调用到主线程的方法,SynchronizationContext的用法。
  • 原文地址:https://www.cnblogs.com/tkzc2013/p/13569546.html
Copyright © 2011-2022 走看看