• 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: 清空所有库的键值对 (这两个指令慎用!!!!
  • 相关阅读:
    剑指 Offer 33. 二叉搜索树的后序遍历序列
    剑指 Offer 32
    OCR技术浅析-tesserOCR(3)
    OCR技术浅析-自写篇(2)
    OCR技术浅析-无代码篇(1)
    SVN服务器+客户端安装和配置
    Git命令集
    数组模拟队列与单调队列求解滑动窗口
    upper_bound与lower_bound
    图中连通块的划分
  • 原文地址:https://www.cnblogs.com/yfb918/p/10775323.html
Copyright © 2020-2023  润新知