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