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"
如果一组命令中有部分命令错误,则正确的命令生效,无法实现回滚