单个键管理
键重命名 rename key newkey newkey存在时会被强制覆盖 renamenx key newkey 只有newkey不存在时候才能执行成功 注意: ·由于重命名键期间会执行del命令删除旧的键, 如果键对应的值比较大, 会存在阻塞Redis的可能性, 这点不要忽视。 ·如果rename和renamenx中的key和newkey如果是相同的, 3.2之前的版本会报错,3.2之后的版本(包含3.2)返回ok 随机返回一个键 randomkey 键过期 ·expire key seconds: 键在seconds秒后过期。 ·expireat key timestamp: 键在秒级时间戳timestamp后过期。 ·pexpire key milliseconds: 键在milliseconds毫秒后过期。 ·pexpireat key milliseconds-timestamp键在毫秒级时间戳timestamp后过期。 注:无论是使用过期时间还是时间戳, 秒级还是毫秒级, 在Redis内部最终使用的都是pexpireat。 如果expire key的键不存在, 返回结果为0;如果过期时间为负值, 键会立即被删除, 犹如使用del命令一样 查询键的剩余过期时间 ttl key 精度为秒级 pttl key 精度更高可以达到毫秒级别 有3种返回值: ·大于等于0的整数: 键剩余的过期时间(ttl是秒, pttl是毫秒) 。 ·-1: 键没有设置过期时间。 ·-2: 键不存在。 清除键的过期时间 persist key 对于字符串类型键, 执行set命令会去掉过期时间, 这个问题很容易在开发中被忽视。 Redis不支持二级数据结构(例如哈希、 列表) 内部元素的过期功能, 例如不能对列表类型的一个元素做过期时间设置。 setex命令作为set+expire的组合, 不但是原子执行, 同时减少了一次网络通讯的时间。 键迁移 move key db 把指定的键从源数据库移动到目标数据库(redis内部多库间迁移) dump+restore 实现在不同的Redis实例之间进行数据迁移的功能, 整个迁移的过程分为两步: 1) dump key 在源Redis上, dump命令会将键值序列化, 格式采用的是RDB格式。 2) restore key ttl value 在目标Redis上, restore命令将上面序列化的值进行复原, 其中ttl参数代表过期时间, 如果ttl=0代表没有过期时间。 migrate migrate host port key|"" destination-db timeout [copy] [replace] [keys key [key ...]] ·host: 目标Redis的IP地址。 ·port: 目标Redis的端口。 ·key|"": 在Redis3.0.6版本之前, migrate只支持迁移一个键, 所以此处是要迁移的键, 但Redis3.0.6版本之后支持迁移多个键, 如果当前需要迁移多个键, 此处为空字符串""。 ·destination-db: 目标Redis的数据库索引, 例如要迁移到0号数据库, 这里就写0。 ·timeout: 迁移的超时时间(单位为毫秒) 。 ·[copy]: 如果添加此选项, 迁移后并不删除源键。 ·[replace]: 如果添加此选项, migrate不管目标Redis是否存在该键都会正常迁移进行数据覆盖。 ·[keys key[key...]]: 迁移多个键, 例如要迁移key1、 key2、 key3, 此处填写“keys key1 key2 key3”。 实现过程和dump+restore基本类似, 但是有3点不太相同: 第一, 整个过程是原子执行的, 不需要在多个Redis实例上开启客户端的, 只需要在源Redis上执行migrate命令即可。 第二, migrate命令的数据传输直接在源Redis和目标Redis上完成的。 第三, 目标Redis完成restore后会发送OK给源Redis, 源Redis接收后会根据migrate对应的选项来决定是否在源Redis上删除对应的键。 migrate迁移的几种情况: 1、源Redis有键, 目标Redis没有,返回ok 2、源Redis和目标Redis都有键,会覆盖掉目标redis的key的value 3、源Redis没有键hello,返回nokey
move、 dump+restore、 migrate三个命令比较
键遍历
全量遍历键
keys pattern pattern使用的是glob风格的通配符
其他数据结构的全量遍历:hgetall、 smembers、 zrange
注:如果Redis包含了大量的键, 执行keys命令很可能会造成Redis阻塞, 所以一般建议不要在生产环境下使用keys命令。
渐进式遍历
scan cursor [match pattern] [count number]
·cursor是必需参数, 实际上cursor是一个游标, 第一次遍历从0开始, 每次scan遍历完都会返回当前游标的值, 直到游标值为0, 表示遍历结束。
·match pattern是可选参数, 它的作用的是做模式的匹配, 这点和keys的模式匹配很像。
·count number是可选参数, 它的作用是表明每次要遍历的键个数, 默认值是10, 此参数可以适当增大。
其他数据结构的渐进式遍历:hscan、 sscan、 zscan
注:scan并不能保证完整的遍历出来所有的键(如果在scan的过程中如果有键的变化,会出现新增的键可能没有遍历到, 遍历出了重
复的键等情况)
数据库管理
切换数据库 select dbIndex 数据库个数在配置文件中配置,参数:databases 16 ---配置16个库,dbindex为0-15 注:cluster模式只允许使用0号库 生产环境不建议使用多库功能: ·Redis是单线程的。 如果使用多个数据库, 那么这些数据库仍然是使用一个CPU, 彼此之间还是会受到影响的。 ·多数据库的使用方式, 会让调试和运维不同业务的数据库变的困难,假如有一个慢查询存在, 依然会影响其他数据库, 这样会使得别的业务方定位问题非常的困难。 ·部分Redis的客户端根本就不支持这种方式。 即使支持, 在开发的时候来回切换数字形式的数据库, 很容易弄乱。 清空数据库 flushdb 只清空当前数据库 flushall 清空所有数据库
关注我的公众号,不定期推送资讯
本文来自博客园,作者:链条君,转载请注明原文链接:https://www.cnblogs.com/MacoLee/p/13970756.html