Redis常见管理命令
Redis常见管理命令一、基础命令1.同步执行 RDB 持久化阻塞主线程,慎用!127.0.0.1:6389 save OK2.异步执行 RDB 持久化fork 子进程bgsave3.返回当前实例的角色master/slave/sentinelrole 示例如下: master角色: 127.0.0.1:6389 role 1) master 2) (integer) 6022666659 3) 1) 1) 192.0.5.30 2) 6389 3) 6022666371 2) 1) 192.0.6.221 2) 6389 3) 6022666371 slave角色: 127.0.0.1:6389 role 1) slave 2) 192.0.6.17 3) (integer) 6389 4) connected 5) (integer) 6022666226 sentinel角色: 127.0.0.1:7389 role 1) sentinel 2) 1) mymaster二:分片集群Cluster运维命令打印集群的整体信息 cluster info 列出集群中所有节点及其状态 cluster nodes 检查集群 redis-cli --cluster check 192.0.6.73:8001 -a ****** 为新节点分配哈希槽(reshard) redis-cli --cluster reshard 192.168.1.101:8003 -a ****** 删除节点 redis-cli --cluster del-node 192.168.1.103:8001 7af3a74056926943fe82649659b6e2c46997a8f1 -a ****** 新增Master节点: redis-cli --cluster add-node 192.168.1.101:8003 192.168.1.101:8001 -a ****** 新增Slave节点: –cluster-slave表示新加入节点是slave节点cluster-master-id 后面指定从节点属于哪个master节点接master节点的id即可 redis-cli --cluster add-node 192.168.1.101:8004 192.168.1.101:8003 --cluster-slave --cluster-master-id cccc3b110d71ae99dbe9a02d7b9a846243cce7c9 -a ****** 迁移slot: redis-cli --cluster reshard 192.168.1.103:8001 -a ****** 平衡slot: redis-cli --cluster rebalance 192.168.1.101:8003 -a ****** 将指定节点添加到当前集群 cluster meet ip port 从集群中移除指定节点 cluster forget node-id 将当前节点设置为指定主节点的从节点 cluster replicate 将集群配置保存到节点配置文件中 cluster saveconfig 将一个或多个槽指派给当前节点 cluster addslots [slot ...] 移除当前节点上的槽指派 cluster delslots [slot …] 移除当前节点的所有槽 cluster flushslots 将槽指派给指定节点 cluster setslot slot node node-id计算key所属的槽位计算 key 所属的槽位 cluster keyslot key 示例如下: 127.0.0.1:8001 cluster keyslot a (integer) 15495 127.0.0.1:8001 cluster keyslot b (integer) 3300 127.0.0.1:8001 cluster keyslot c (integer) 7365 127.0.0.1:8001 cluster keyslot 1 (integer) 9842 127.0.0.1:8001 cluster keyslot 2 (integer) 5649 127.0.0.1:8001 cluster keyslot 3 (integer) 1584返回槽位中包含的 key 数量cluster countkeysinslot slot 示例如下: 192.0.6.73:8004 cluster countkeysinslot 7365 (integer) 1创建分片集群Redis 5,Redis 6版本: redis-cli --cluster create 192.168.1.101:8001 192.168.1.101:8002 192.168.1.102:8001 192.168.1.102:8002 192.168.1.103:8001 192.168.1.103:8002 --cluster-replicas 1 -a ******列出所有的客户端连接列出所有客户端连接 client list配置管理命令获取指定配置参数的值CONFIG GET * 查看所有config get parameter 示例如下: 192.0.6.73:8004 config get dir 1) dir 2) /redis/8004/data 192.0.6.73:8004 config get * 1) rdbchecksum 2) yes ...... 295) oom-score-adj-values 296) 0 200 800三、动态修改配置参数重启后失效config set parameter value 示例如下: 192.0.6.73:8004 config get slowlog-max-len 1) slowlog-max-len 2) 128 192.0.6.73:8004 config set slowlog-max-len 256 OK 192.0.6.73:8004 config get slowlog-max-len 1) slowlog-max-len 2) 256四、将当前配置持久化到 redis.conf 文件config rewrite 示例如下: 127.0.0.1:8001 config get slowlog-max-len 1) slowlog-max-len 2) 128 127.0.0.1:8001 config set slowlog-max-len 256 OK 127.0.0.1:8001 config get slowlog-max-len 1) slowlog-max-len 2) 256 cat /redis/8001/conf/redis.conf |grep slowlog-max-len slowlog-max-len 128 127.0.0.1:8001 config rewrite OK cat /redis/8001/conf/redis.conf |grep slowlog-max-len slowlog-max-len 256重置 INFO 命令中的统计信息config resetstat 示例如下: 127.0.0.1:8001 config resetstat OK扫描并找出大 keyredis-cli --bigkeys 示例如下: redis-cli -p 6389 -a flzx3Qc! --bigkeys目标生产库进行压测压测: 100个客户端同时请求redis一共执行20000次。 redis-benchmark -p 6389 -h 25.19.118.70 -c 100 -n 20000 500个客户端同时请求redis一共执行20000次。 redis-benchmark -p 6389 -h 25.19.118.70 -a yELxh_3qSiXr -c 500 -n 20000 -q五、通用操作切换数据库(指定数据库 0-15默认 0)select db_index 示例如下: 127.0.0.1:6389 select 5 OK 127.0.0.1:6389[5]1、删除一个或多个 keydel key... 示例如下 127.0.0.1:6389 del a (integer) 1 127.0.0.1:6389 del b c (integer) 2非阻塞删除异步删除unlink key... 示例如下 127.0.0.1:6389 unlink a (integer) 1 不支持多个 127.0.0.1:6389 ulink b c (error) ERR unknown command ulink, with args beginning with: b, c,判断 key 是否存在exists key 示例如下: 127.0.0.1:6389 exists abc (integer) 1 127.0.0.1:6389 exists bcd (integer) 0查看 key 剩余生存时间秒127.0.0.1:6389 set a 123 OK 127.0.0.1:6389 ttl a (integer) -1 127.0.0.1:6389 set b 123 ex 100 OK 127.0.0.1:6389 ttl b (integer) 97查看 key 剩余生存时间毫秒pttl key 示例如下 127.0.0.1:6389 pttl b (integer) 82033为 key 设置过期时间秒expire key seconds 示例如下: 127.0.0.1:6389 ttl a (integer) -1 127.0.0.1:6389 expire a 100 (integer) 1 127.0.0.1:6389 ttl a (integer) 97以毫秒为单位设置过期时间pexpire key milliseconds 示例如下: 127.0.0.1:6389 pexpire a 100000 (integer) 1 127.0.0.1:6389 ttl a (integer) 98 127.0.0.1:6389 pttl a (integer) 78329设置 key 在指定时间戳过期expireat key timestamp 示例如下 127.0.0.1:6389 expireat a 78329 (integer) 1 127.0.0.1:6389 ttl a (integer) -2 127.0.0.1:6389 get a (nil)2、移除 key 的过期时间使其永久有效persist key 示例如下 127.0.0.1:6389 set a 123 ex 60 OK 127.0.0.1:6389 ttl a (integer) 57 127.0.0.1:6389 persist a (integer) 1 127.0.0.1:6389 ttl a (integer) -1查看 key 的数据类型type key 示例如下 127.0.0.1:6389 type a string3、查看 key 的内部编码格式object encoding key 示例如下 127.0.0.1:6389 object encoding a int 127.0.0.1:6389 get a 123 127.0.0.1:6389 set b 123abc OK 127.0.0.1:6389 object encoding b embstr4、重命名 key若新 key 存在则覆盖rename oldkey newkey 示例如下 127.0.0.1:6389 set a 123 OK 127.0.0.1:6389 set b 456 OK 127.0.0.1:6389 rename a b OK 127.0.0.1:6389 get b 123 127.0.0.1:6389 get a (nil)5、重命名 key仅当新 key 不存在时成功renamenx oldkey newkey 示例如下 127.0.0.1:6389 set a 123 OK 127.0.0.1:6389 set b 456 OK 127.0.0.1:6389 renamenx a b (integer) 0 127.0.0.1:6389 get b 456 127.0.0.1:6389 get a 123 127.0.0.1:6389 renamenx a c (integer) 1 127.0.0.1:6389 get c 1236、将 key 移动到另一个数据库move key db_index 示例如下 127.0.0.1:6389 set a 123 OK 127.0.0.1:6389 move a 5 (integer) 1 127.0.0.1:6389 get a (nil) 127.0.0.1:6389 select 5 OK 127.0.0.1:6389[5] get a 123从当前数据库随机返回一个 keyrandomkey 示例如下 127.0.0.1:6389 randomkey b 127.0.0.1:6389 randomkey d 127.0.0.1:6389 randomkey e查找匹配模式的 key生产环境慎用keys pattern 示例如下 127.0.0.1:6389 keys a (empty array) 127.0.0.1:6389 keys b 1) b 127.0.0.1:6389 get b 456 或者指定*,查看所有(默认db0),性能差生产环境勿用 127.0.0.1:6389 keys * 1) abc 2) b 3) e 4) a02 5) g 6) d 7) a01 8) 20260127 9) h 10) c 支持通配符 127.0.0.1:6389 keys a* 1) abc 2) a02 3) a017、序列化 key 并返回其值dump key 通过 序列化 和 反序列化操作可以实现对单个key的备份/恢复、迁移等工作。 示例如下 127.0.0.1:6389 set a 123 OK 127.0.0.1:6389 get a 123 127.0.0.1:6389 dump a \x00\xc0{\t\x00\x98\x10\x02-T\xfc\x04\b 127.0.0.1:63898.对列表、集合或有序集合进行排序sort key 示例如下 对列表(List)进行数字升序排序 127.0.0.1:6389 LPUSH numbers 5 2 3 6 1 (integer) 5 127.0.0.1:6389 sort numbers 1) 1 2) 2 3) 3 4) 5 5) 6 127.0.0.1:6389 sort numbers desc 1) 6 2) 5 3) 3 4) 2 5) 1六、不同类型 keys 的操作1.字符串String操作设置字符串值支持过期时间和存在性判断 set key value [NX|XX] [EX|PX] 示例如下 127.0.0.1:6389 set cjc 123 ex 10 OK 获取 key 的值 get key 示例如下 127.0.0.1:6389 get cjc 123 批量设置多个字符串值 mset key value [key value ...] 示例如下 127.0.0.1:6389 mset cjc01 1 cjc02 b cjc03 c OK 127.0.0.1:6389 keys cjc* 1) cjc03 2) cjc01 3) cjc02 批量获取多个 key 的值 mget key... 示例如下 127.0.0.1:6389 mget cjc01 cjc02 cjc03 1) 1 2) b 3) c 设置值并指定过期时间秒 setex key seconds value 示例如下 127.0.0.1:6389 setex cjc04 100 3 OK 127.0.0.1:6389 get cjc04 3 127.0.0.1:6389 ttl cjc04 (integer) 92 以毫秒为单位设置值并指定过期时间 psetex key milliseconds value 示例如下 127.0.0.1:6389 psetex cjc05 100000 100 OK 127.0.0.1:6389 get cjc05 100 127.0.0.1:6389 ttl cjc05 (integer) 91 127.0.0.1:6389 pttl cjc05 (integer) 83576 不存在时设置值 setnx key value key 示例如下 127.0.0.1:6389 setnx cjc05 100 (integer) 0 127.0.0.1:6389 setnx cjc06 100 (integer) 1