Redis 常用命令

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"

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容