zoukankan      html  css  js  c++  java
  • Redis学习之路(三)常用命令总结

    一、集群

    查看Redis集群有多少个库

    192.168.200.100:7001> config get databases
    1) "databases"
    2) "16"

    连接:

    [root@master src]# ./redis-cli -h 192.168.200.102 -c -p 7008

    打印集群信息,查看集群状态:cluster info

    列出集群当前已知的所有节点,以及这些节点的相关信息:cluster nodes

    添加节点:将ip和port所指定的节点添加到集群中:cluster meet ip port

    从集群中移除指定的节点:cluster forget <node_id>

    实例:

    127.0.0.1:7000> CLUSTER FORGET 68cc9ca44041627308b176841da689b56b599a42
    OK  --只会在7000节点FORGET  1分钟不执行其他操作,节点会自动回到集群

    主从切换:cluster failover [force | takeover]在slave上执行,主从切换

    cluster saveconfig 将节点的配置文件保存到硬盘里面

    cluster flushslots移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点

    cluster keyslot <key> 计算键key应该被放在在哪个槽上

    cluster countkeysinslot <slot>返回槽slot目前包含的键值对数量

    二、键管理

    1、键重命名

    rename oldkey newkey 
    renamenx name name1  //重命名失败,只有当name1不存在才能改名

    2、返回随机键

    randomkey 

    3、键过期

    expire keytest 20 //键test在20秒后过期
    ttl keytest //查看过期按秒倒计时,当返回值为-2时说明该键已经被删除
    pttl keytest //查看过期按毫秒倒计时
    pexpire keytest 20000 //20000毫秒后过期
    expire keytest -2 //直接过期,和del一样

    设置键在某个时间点过期 使用的是时间戳

    expireat name:04 1516971599 //设置在2018/01/27 20:59:59过期
    时间转时间戳:网址http://tool.chinaz.com/Tools/unixtime.aspx

    persist keytest  //去掉过期

    ttl keytest //返回-1 可以永久查询不失效

    注意:对于字符串重设值后,expire无效

    set name james
    expire name 50
    ttl name
    set name james1 //此时expire取消
    ttl name //返回-1, 长期有效

    4、键的迁移

    把部分数据迁移到另一台Redis服务器

    192.168.200.100:7001> config get databases
    1) "databases"
    2) "16"

    可以看到Redis有16个库,编号为 0-15

    1、key 的迁移

    move keytest 5 //迁移到第6个库
    
    select 5 //数据库切换到第6个库 
    
    上面这种模式不建议在生产环境使用,在同一个redis里可以玩

    2、dump key

    restore key ttl 0 //实现不同的Redis实例的键迁移,ttl = 0代表没有过去时间
    dump name; //  得到"x00x05jamesx001x82;f"DhJ"
    在B服务器上:192.168.1.118
    restore name 0 "x00x05jamesx001x82;f"DhJ" 
    get name  //返回james

    3、migrate指令迁移到其它实例redis,在1.111服务器上将test移到118

    5、键的遍历

    Redis提供了两个命令来遍历所有的键

    a、键全量遍历

    mset country china city bj name james  //设置3个字符串键值对 
    keys  * //返回所有的键, *匹配任意字符多个字符
    keys *y //以结尾的键, 
    keys n*e //以n开头以e结尾,返回name
    keys n?me  //  ?问号代表只匹配一个字符  返回name,全局匹配 
    keys n?m*   //返回name
    keys [j,l]*  //返回以j l开头的所有键  keys [j]ames 全量匹配james
    考虑到是单线程, 在生产环境不建议使用,如果键多可能会阻塞,如果键少,可以

    b、渐进式遍历

    mset  a a b b c c d d e e f f g g h h i i j j k k l l m m n n o o p p q q r r s s t t u u v v w w x x y y z z    //初始化26个字母键值对
    字符串类型: 
    scan 0 match n* count 20 //匹配以n开头的键,取20条,第一次scan 0开始

     第二次从游标10开始取20个以n开头的键,相当于一页一页的取,当最后返回0时,键被取完

    注:渐进式遍历可有效地解决keys命令可能产生的阻塞问题
    除scan字符串外:还有以下
    SCAN 命令用于迭代当前数据库中的数据库键。
    SSCAN 命令用于迭代集合键中的元素。
    HSCAN 命令用于迭代哈希键中的键值对。
    ZSCAN 命令用于迭代有序集合中的元素(包括元素成员和元素分值)。
    用法和scan一样

    6、Redis数据库管理

    select 0 //共16个库, 0 --15, select切换数据库
    set name james
    select 1
    get name //隔离了,取不到,和mysql不同库一样
    其中redis3.0以后的版本慢慢弱化了这个功能,如在redis cluster中只允许0数据库
    原因:
    1,redis单线程,如果用多个库,这些库使用同一个CPU,彼此会有影响
    2,多数据库,调试与运维麻烦,若有一个慢查询,会影响其它库查询速度
    3,来回切换,容易混乱
    flushdb: 只清空当前数据库的键值对 dbsiz 0
    flushall: 清空所有库的键值对 (这两个指令慎用!!!!
  • 相关阅读:
    Atitti 图像处理 图像混合 图像叠加 blend 原理与实现
    Atitit Gaussian Blur 高斯模糊 的原理and实现and 用途
    Atitit 图像处理 灰度图片 灰度化的原理与实现
    Atitit (Sketch Filter)素描滤镜的实现  图像处理  attilax总结
    Atitit 实现java的linq 以及与stream api的比较
    Atitit attilax在自然语言处理领域的成果
    Atitit 图像处理 常用8大滤镜效果 Jhlabs 图像处理类库 java常用图像处理类库
    Atitit 图像处理--图像分类 模式识别 肤色检测识别原理 与attilax的实践总结
    Atitit apache 和guava的反射工具
    atitit。企业的价值观 员工第一 vs 客户第一.docx
  • 原文地址:https://www.cnblogs.com/yfb918/p/10775323.html
Copyright © 2011-2022 走看看