Redis键、数据库管理

Redis键管理

键重命名mysql

       rename oldKey newkey    //格式redis

       rename oldKey newKey     //若oldKey以前存在则被覆盖sql

       set name james ;set name1 mike //数据初始化数据库

       renamenx name name1 //重命名失败,只有当name1不存在才能更名服务器

返回随机键  运维

        dbsize          //redis有16个库,查看当前库的键值对总数dom

        randomkey  //返回随机键spa

键过时:线程

        expire name:03 20  //键name:03 在10秒后过时unix

        ttl name:03        //查看过时按秒到计时,当返回-2说明已删除

        pttl name:03       //查看过时按毫秒到时计

 

        set name:05 james  //初始化数据

        pexpire name:05 20000  //20000毫秒(20S)后过时

        expire name:06 -2  //直接过时,和del同样

        expireat name:04 1516971599  //设置在2018/01/26 20:59:59过时

        时间转时间戳:网址http://tool.chinaz.com/Tools/unixtime.aspx

 

        hset user:01 name james //初始化数据

        expire user:01 60     //设置60S右过时

        ttl user:01          //查看过时剩余时间

        persist user:01       //去掉过时

        ttl user:1           //返回-1 能够永久查询不失效

 

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

        set name james

        expire name 50

        ttl name

        set name james1 //此时expire取消

        ttl name   //返回-1, 长期有效

 

键的迁移:

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

1, move key db  //reids有16个库, 编号为0-15

   set name james1;  move name 5 //迁移到第6个库

   select 5 ;//数据库切换到第6个库, get name  能够取到james1

   这种模式不建议在生产环境使用,在同一个reids里能够玩

2, dump key;

   restore key ttl value    //实现不一样redis实例的键迁移,ttl=0表明没有过时时间

    例子:在A服务器上 192.168.1.111

   set name james;

   dump name; //  获得"\x00\x05james\b\x001\x82;f\"DhJ"

   在B服务器上:192.168.1.118

   restore name 0 "\x00\x05james\b\x001\x82;f\"DhJ"

   get name  //返回james

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

migrate

192.168.1.118

6379  

test

0

1000

copy

replace

keys

指令

要迁移的目标IP

端口

迁移键值

目标库

超时时间

迁移后不删除原键

无论目标库是不存在test键都迁移成功

迁移多个键

键的遍历

  redis提供了两个命令来遍历全部的键

  1,键全量遍历:

    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

    考虑到是单线程, 在生产环境不建议使用,若是键多可能会阻塞,若是键少,能够

2,渐进式遍历

    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开始

第二次从游标4096开始取20个以n开头的键,至关于一页一页的取

当最后返回0时,键被取完

好比将old:user开头的元素全删掉

注:可有效地解决keys命令可能产生的阻塞问题

  • 除scan字符串外:还有如下
  • SCAN 命令用于迭代当前数据库中的数据库键。
  • SSCAN 命令用于迭代集合键中的元素。
  • HSCAN 命令用于迭代哈希键中的键值对。
  • ZSCAN 命令用于迭代有序集合中的元素(包括元素成员和元素分值)。

    用法和scan同样

 

redis数据库管理

    select 0   //共16个库, 0 --15, select切换数据库

    set name james

    select 1

    get name  //隔离了,取不到,和mysql不一样库同样

    flushdb: 只清空当前数据库的键值对  dbsiz  0

    flushall:  清空全部库的键值对  (这两个指令慎用!!!!)

其中redis3.0之后的版本慢慢弱化了这个功能,如在redis cluster中只容许0数据库缘由:

1,redis单线程,若是用多个库,这些库使用同一个CPU,彼此会有影响

2,多数据库,调试与运维麻烦,如有一个慢查询,会影响其它库查询速度

3,来回切换,容易混乱

相关文章
相关标签/搜索