美文网首页
Redis 常用命令

Redis 常用命令

作者: 宏势 | 来源:发表于2023-11-13 13:59 被阅读0次

    Redis客户端程序redis-cli, 即Redis命令行程序,官网命令说明网址:https://redis.io/commands/

    • help command :查看指定命令详情,比如help set, 查看set命令详情

    一、Redis启动连接

    • 启动redis服务
    ./redis-server  redis.conf #配置redis.conf文件的路径
    
    • 启动哨兵
    ./redis-sentinel   sentinel.conf #配置sentinel.conf文件的路径,
    
    • 使用redis-cli连接
    ./redis-cli -h 127.0.0.1 -p 6379 -a pwd #远程连接指定的redis , -a 参数用于指定密码
    
    auth password #验证密码
    
    select 1 #切换到指定数据库,默认是0
    
    shutdown #关闭redis服务 SHUTDOWN [NOSAVE] [SAVE]
    
    exit #退出连接
    
    • 获取配置参数值
    config get masterauth
    
    • 询问master状态(可以看到哨兵的配置参数)
    sentinel master mymaster #mymaster 是master redis 名字
    
    • 修改配置并持久化到配置文件
    config set masterauth passwd123 
    config set requirepass passwd123 
    config rewrite 
    

    二、Key命令(不区分大小写)

    • Keys pattern 返回符合给定模式的key
    keys *  #查看所有健
    
    • DBSIZE
      返回当前数据库的 key 的数量

    • SET key value [EX seconds] [PX milliseconds] [NX|XX]
      其中,key是要存储的键名,value是要存储的值。EX和PX参数可选,用于设置键的过期时间,单位分别为秒和毫秒。NX和XX参数也可选,用于控制键的创建行为,NX表示只在键不存在时创建,XX表示只在键已存在时执行操作。

    set  mykey "hello world"   #设置键值
    
    ttl mykey  #查看键值剩余有效时间(秒)
    pttl  mykey #查看键值剩余有效时间(豪秒)
    
    • EXISTS key 判断key是否存在
    EXISTS test #返回test 键是否存在
    
    • EXPIRE key seconds 为key设置过期时间

    • EXPIRE key timestamp 用时间戳的方式给key设置过期时间

    • PEXPIRE key milliseconds 设置key的过期时间以毫秒计

    • PERSIST key 移除key的过期时间,即持久保存

    • RENAME key newkey 修改key的名称

    • RENAMENX key newkey 仅当newkey不存在时,将key改名为newkey

    • TYPE key 返回key所存储的值的类型

    • MOVE key db 将当前数据库的key移动到数据库db当中

    move test 10 # 将key test 启动到数据库10
    
    • DEL key1 key2 ...keyN 删除指定key
    del test1 test2 test3 #删除test1, test2, test3
    
    • flushdb 删除当前数据库种的key,慎用
    • flushall 删除所有数据库种的Key,慎用

    三、服务器命令

    1.持久化相关命令

    • BGREWRITEAOF
      异步执行一个 AOF(AppendOnly File) 文件重写操作
    • BGSAVE
      在后台异步保存当前数据库的数据到磁盘
    • SAVE
      同步保存数据到硬盘
    • MONITOR
      实时打印出 Redis 服务器接收到的命令,调试用
    • REPLICAOF host port
      将当前服务器转变为指定服务器的从属服务器(slave server) ,旧版slaveof host port
    • SLOWLOG subcommand [argument]
      管理 redis 的慢日志
    • SYNC
      用于复制功能(replication)的内部命令

    2.客户端连接

    • CLIENT KILL [ip:port] [ID client-id]
      关闭客户端连接
    • CLIENT LIST
      获取连接到服务器的客户端连接列表
    • CLIENT GETNAME
      获取连接的名称
    • CLIENT PAUSE timeout
      在指定时间内终止运行来自客户端的命令
    • CLIENT SETNAME connection-name
      设置当前连接的名称

    3.命令信息

    • CLUSTER SLOTS
      获取集群节点的映射数组
    • COMMAND LIST
      获取 Redis 命令列表
    • COMMAND COUNT
      获取 Redis 命令总数
    • COMMAND GETKEYS
      获取给定命令的所有键
    • COMMAND INFO command-name [command-name ...]
      获取指定 Redis 命令描述的数组
    • CONFIG RESETSTAT
      重置 INFO 命令中的某些统计数据
    • LASTSAVE
      返回最近一次 Redis 成功将数据保存到磁盘上的时间,以 UNIX 时间戳格式表示
    • ROLE
      返回主从实例所属的角色

    四、数据类型命令

    1.字符串命令

    • SET key value 设置指定key的值

    • GET key 获取指定key的值

    • SETEX key seconds value 将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。

    • SETNX key value 只有在 key 不存在时设置 key 的值。

    • DEL key1 key2 删除指定key

      127.0.0.1:9850> set a 100
      OK
      127.0.0.1:9850> get a
      "100"
      127.0.0.1:9850> setex b 60 10000
      OK
      127.0.0.1:9850> get b
      "10000"
      127.0.0.1:9850> ttl b
      (integer) 52
      127.0.0.1:9850> setnx a 1
      (integer) 0
      127.0.0.1:9850> get a
      "100"
      127.0.0.1:9850> del a
      (integer) 1
      
    • MSET key value [key value ...] 同时设置一个或多个 key-value 对。

    • MGET KEY1 KEY2 获取一个或者多个给定key的值

    • STRLEN key 返回 key 所储存的字符串值的长度。

    • INCR key 将 key 中储存的数字值增一

    • APPEND key value 如果 key 已经存在并且是一个字符串, APPEND 命令将 指定value 追加到改 key 原来的值(value)的末尾

      127.0.0.1:9850> mset a 100 b 200
      OK
      127.0.0.1:9850> mget a b
      1) "100"
      2) "200"
      127.0.0.1:9850> strlen a
      (integer) 3
      127.0.0.1:9850> incr a
      (integer) 101
      127.0.0.1:9850> get a
      "101"
      127.0.0.1:9850> append b 100
      (integer) 6
      127.0.0.1:9850> get b
      "200100"
      

    2.列表命令

    • LPUSH key value1 [value2] 将一个或多个值插入到列表头部

    • RPUSH key value1 [value2] 在列表尾部中添加一个或多个值

    • LRANGE key start stop 获取列表指定范围内的元素

    • LPOP key 移出并获取列表的第一个元素

    • RPOP key 移除并获取列表最后一个元素

      127.0.0.1:9850> lpush a a1 a2 a3
      (integer) 3
      127.0.0.1:9850> lrange a 0 -1
      1) "a3"
      2) "a2"
      3) "a1"
      127.0.0.1:9850> lpop a
      "a3"
      127.0.0.1:9850> lrange a 0 -1
      1) "a2"
      2) "a1"
      
    • LINDEX key index 通过索引获取列表中的元素,第一个是0

    • LSET key index value 通过索引设置列表元素的值

    • LLEN key 获取列表长度

    • BLPOP key1 [key2 ] timeout 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

    • BRPOP key1 [key2 ] timeout移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

      127.0.0.1:9850> lset a 1 a11111
      OK
      127.0.0.1:9850> lrange a 0 -1
      1) "a2"
      2) "a11111"
      127.0.0.1:9850> llen a
      (integer) 2
      127.0.0.1:9850> lindex a 1
      "a11111"
      

    3.SET命令

    • SADD key member1 [member2] 向集合添加一个或多个成员

    • SMEMBERS key 返回集合中的所有成员

    • SCARD key 获取集合的成员数

    • SREM key member1 [member2] 移除集合中一个或多个成员

      127.0.0.1:9850> sadd a a1 a2 a3
      (integer) 3
      127.0.0.1:9850> smembers a
      1) "a1"
      2) "a2"
      3) "a3"
      127.0.0.1:9850> scard a
      (integer) 3
      
    • SINTER key1 [key2] 返回给定所有集合的交集

    • SDIFF key1 [key2] 返回给定所有集合的差集

    • SMOVE source destination member 将 member 元素从 source 集合移动到 destination 集合

      127.0.0.1:9850> sadd a hello world
      (integer) 2
      127.0.0.1:9850> smembers a
      1) "a1"
      2) "a2"
      3) "a3"
      4) "hello"
      5) "world"
      127.0.0.1:9850> sadd b b1 b2 hello
      (integer) 3
      127.0.0.1:9850> sinter a b
      1) "hello"
      127.0.0.1:9850> sdiff a b
      1) "a1"
      2) "a2"
      3) "a3"
      4) "world"
      

    4.Hash命令

    • HSET key field1 value1 [field2 value2 ] 将哈希表 key 中的字段 field 的值设为 value

    • HGET key field 获取存储在哈希表中指定字段的值

    • HDEL key field1 [field2] 删除一个或多个哈希表字段

    • HEXISTS key field 查看哈希表 key 中,指定的字段是否存在。

    • HKEYS key获取所有哈希表中的字段

    • HVALS key 获取哈希表中的所有值

    • HGETALL key 获取在哈希表中指定 key 的所有字段和值

    • HLEN key 获取哈希表中字段的数量

    • HMGET key field1 [field2] 获取所有给定字段的值

    • HMSET key field1 value1 [field2 value2 ]同时将多个 field-value (域-值)对设置到哈希表 key 中。

      127.0.0.1:9850> hset a 1 a1 2 a2
      (integer) 2
      127.0.0.1:9850> hget a 1
      "a1"
      127.0.0.1:9850> hkeys a
      1) "1"
      2) "2"
      127.0.0.1:9850> hgetall a
      1) "1"
      2) "a1"
      3) "2"
      4) "a2"
      

    5.Sorted Set命令

    • ZADD key score1 member1 [score2 member2] 向有序集合添加一个或多个成员,或者更新已存在成员的分数
    • ZRANGE key start stop [WITHSCORES] 通过索引区间返回有序集合成指定区间内的成员
    • ZREM key member [member ...] 移除有序集合中的一个或多个成员
    • ZINCRBY key increment member 有序集合中对指定成员的分数加上增量 increment
    • ZCARD key 获取有序集合的成员数
    • ZRANK key member 返回有序集合中指定成员的索引
    • ZSCORE key member 返回有序集中,成员的分数值
      127.0.0.1:9850> zadd a  1 a1 2 a2 3 a3
      (integer) 3
      127.0.0.1:9850> zrange a 0 -1
      1) "a1"
      2) "a2"
      3) "a3"
      127.0.0.1:9850> zscore a a2
      "2"
      127.0.0.1:9850> zincrby a 100 a1
      "101"
      127.0.0.1:9850> zrange a 0 -1
      1) "a2"
      2) "a3"
      3) "a1"
      127.0.0.1:9850> zrange a 0 -1 withscores
      1) "a2"
      2) "2"
      3) "a3"
      4) "3"
      5) "a1"
      6) "101"
      
      

    五、事物命令

    Redis 事务的本质是一组命令的集合。事务支持一次执行多个命令,一个事务中所有命令都会被序列化。在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事务执行命令序列中。

    • MULTI 标记一个事务块的开始
    • EXEC 执行所有事务块内的命令(提交事务)
    • DISCARD 取消事务,放弃执行事务块内的所有命令(回滚事务)
    127.0.0.1:9850> multi
    OK
    127.0.0.1:9850(TX)> set a 100
    QUEUED
    127.0.0.1:9850(TX)> set b 101
    QUEUED
    127.0.0.1:9850(TX)> exec
    1) OK
    2) OK
    127.0.0.1:9850> mget a b
    1) "100"
    2) "101"
    127.0.0.1:9850> multi
    OK
    127.0.0.1:9850(TX)> set a 1
    QUEUED
    127.0.0.1:9850(TX)> set b 2
    QUEUED
    127.0.0.1:9850(TX)> discard
    OK
    
    • UNWATCH 取消 WATCH 命令对所有 key 的监视。
    • WATCH key [key ...]监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断, 用于控制事务是提交还是回滚

    比如:客户端1在watch之后,执行事务之前修改了key a的值,所以客户端2的事务回滚了
    客户端1:

    127.0.0.1:9850> set a change
    OK
    

    客户端2:

    127.0.0.1:9850> watch a
    OK
    127.0.0.1:9850> multi
    OK
    127.0.0.1:9850(TX)> set b 100000
    QUEUED
    127.0.0.1:9850(TX)> exec
    (nil)
    127.0.0.1:9850> get b
    "101"
    

    如果一组命令中有部分命令错误,则正确的命令生效,无法实现回滚

    相关文章

      网友评论

          本文标题:Redis 常用命令

          本文链接:https://www.haomeiwen.com/subject/kzhjidtx.html