启动本地客户端
redis-cli
//显示
127.0.0.1:6379>
如果设置了密码
127.0.0.1:6379> auth 密码
检测 redis 服务是否启动
127.0.0.1:6379> ping
//显示
PONG
连接远程redis服务
格式:redis-cli -h host -p port -a password
redis-cli -h 192.168.10.10 -p 6379 -a
注:远程服务器必须开放外网访问的6379端口
key
格式:COMMAND KEY_NAME
key命令与描述:
| 命令 | 描述 |
|---|---|
| del key | 删除指定的key |
| exists key | 检查给定 key 是否存在 |
| type key | 返回 key 所储存的值的类型。 |
| rename key newkey | 修改 key 的名称 |
| renamenx key newkey | 仅当 newkey 不存在时,将 key 改名为 newkey 。 |
| dump key | 序列化给定 key ,并返回被序列化的值。 |
| expire key seconds | 为给定 key 设置过期时间,以秒计。 |
| expireat key timestamp | EXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置过期时间。 不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳(unix timestamp)。 |
| pexpire key milliseconds | 设置 key 的过期时间以毫秒计 |
| pexpire key milliseconds-timestamp | 设置 key 过期时间的时间戳(unix timestamp) 以毫秒计 |
| keys pattern | 查找所有符合给定模式( pattern)的 key 。 |
| move key db | 将当前数据库的 key 移动到给定的数据库 db 当中。 |
| persist key | 移除 key 的过期时间,key 将持久保持。 |
| pttl key | 以毫秒为单位返回 key 的剩余的过期时间。 |
| ttl key | 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。 |
| randomkey | 从当前数据库中随机返回一个 key 。 |
查看所有的key
keys *
//显示
1) "queues:orderWarning:delayed"
2) "hello"
3) "downtime"
4) "orderWarning"
查看key的类型
127.0.0.1:6379> type hello
string
127.0.0.1:6379>
127.0.0.1:6379> type orderWarning
hash
127.0.0.1:6379>
127.0.0.1:6379> type queues:orderWarning:delayed
zset
127.0.0.1:6379> type world
none
查看key是否存在,存在返回1,不存在返回0
127.0.0.1:6379> exists hello
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379> exists world
(integer) 0
127.0.0.1:6379>
序列化指定key
127.0.0.1:6379> get hello
"world"
127.0.0.1:6379>
127.0.0.1:6379> dump hello
"\x00\x05world\b\x00\xa0\xfc\xd0;y\xb0\xf8\xfa"
设置key
127.0.0.1:6379> ttl hello
(integer) -1
127.0.0.1:6379>
127.0.0.1:6379> expire hello 60
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379> ttl hello
(integer) 55
127.0.0.1:6379>
127.0.0.1:6379> exists hello
(integer) 1
127.0.0.1:6379> exists hello
(integer) 0
127.0.0.1:6379>
127.0.0.1:6379> ttl hello
(integer) -2
127.0.0.1:6379>
ttl key查看过期时间,key存在且永久时返回-1,key存在且设置了过期时间,则返回剩余的过期时间55,key不存在时过期时间返回-2。
字符串(string)
命令与描述:
| 命令 | 描述 |
|---|---|
| set key value | 设置指定 key 的值 |
| get key | 获取指定 key 的值 |
| getrange key start end | 返回 key 中字符串值的子字符 |
| getset key value | 将给定 key 的值设为 value ,并返回 key 的旧值(old value)。 |
| setbit key offset value | 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit) |
| getbit key offset | 对 key 所储存的字符串值,获取指定偏移量上的位(bit) |
| mget key [key2...] | 获取所有(一个或多个)给定 key 的值 |
| setex key seconds value | 将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位) |
| setnx key value | 只有在 key 不存在时设置 key 的值 |
| setrange key offset value | 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始 |
| strlen key | 返回 key 所储存的字符串值的长度。 |
| mset key value [key2 value2...] | 同时设置一个或多个 key-value 对。 |
| msetnx key value [key2 value2...] | 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。 |
| psetex key milliseconds value | 这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位 |
| incr key | 将 key 中储存的数字值增一 |
| incrby key increment | 将 key 所储存的值加上给定的增量值(increment ) |
| incrbyfloat key increment | 将 key 所储存的值加上给定的浮点增量值(increment) |
| decr key | 将 key 中储存的数字值减一。 |
| decrby key decrement | key 所储存的值减去给定的减量值(decrement) |
| append key value | 如果 key 已经存在并且是一个字符串, APPEND 命令将指定的 value 追加到该 key 原来值(value)的末尾 |
设置指定key的值
如果key不存在,则创建一个新的key,并设定value值; 如果key已经存在,则覆盖之前key的value,
127.0.0.1:6379> set key value
OK
127.0.0.1:6379> get key
"value"
127.0.0.1:6379>
127.0.0.1:6379> set key "hello world"
OK
127.0.0.1:6379> get key
"hello world"
127.0.0.1:6379>
获取key的值
返回 key 的值,如果 key 不存在时,返回 nil。 如果 key 不是字符串类型,那么返回一个错误
127.0.0.1:6379> keys *
1) "queues:orderWarning:delayed"
2) "hello"
3) "key"
4) "downtime"
5) "orderWarning"
127.0.0.1:6379> type key
string
127.0.0.1:6379> type orderWarning
hash
127.0.0.1:6379> get key
"hello world"
127.0.0.1:6379> get world
(nil)
127.0.0.1:6379> git orderWarning
(error) ERR unknown command 'git'
127.0.0.1:6379> type queues:orderWarning:delayed
zset
127.0.0.1:6379> get queues:orderWarning:delayed
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379>
获取多个key的值
127.0.0.1:6379> mget hello key
1) "world"
2) "hello world"
127.0.0.1:6379>
截取key中的value字符串
127.0.0.1:6379> get key
"hello world"
127.0.0.1:6379>
127.0.0.1:6379> get key
"hello world"
127.0.0.1:6379> getrange key 0 2
"hel"
127.0.0.1:6379> getrange key 0 -1
"hello world"
127.0.0.1:6379>
设置指定的key,并返回旧的value值
127.0.0.1:6379> getset php mysql # 没有旧值,返回(nil)
(nil)
127.0.0.1:6379> get php
"mysql"
127.0.0.1:6379> getset php redis
"mysql"
127.0.0.1:6379> get php
"redis"
127.0.0.1:6379>
增加key的值
127.0.0.1:6379> incr hello # key的值必须是数字
(error) ERR value is not an integer or out of range
127.0.0.1:6379> set int 20
OK
127.0.0.1:6379> get int
"20"
127.0.0.1:6379> incr int # 自增1
(integer) 21
127.0.0.1:6379> get int
"21"
127.0.0.1:6379> incrby int 9 # 增加9
(integer) 30
127.0.0.1:6379> get int
"30"
127.0.0.1:6379>
减少key的值
127.0.0.1:6379> decr hello
(error) ERR value is not an integer or out of range
127.0.0.1:6379>
127.0.0.1:6379> get int
"30"
127.0.0.1:6379> decr int
(integer) 29
127.0.0.1:6379> get int
"29"
127.0.0.1:6379> decrby int 9
(integer) 20
127.0.0.1:6379> get int
"20"
追加value值到指定key的后面
127.0.0.1:6379> get hello
"hello"
127.0.0.1:6379> append hello " world"
(integer) 11
127.0.0.1:6379> get hello
"hello world"
127.0.0.1:6379>
哈希(hash)
命令与描述:
| 命令 | 描述 |
|---|---|
| hdel key field1 [field2...] | 删除一个或多个哈希表字段 |
| hexists key field | 查看哈希表 key 中,指定的字段是否存在 |
| hget key field | 获取存储在哈希表中指定字段的值 |
| hgetall key | 获取在哈希表中指定 key 的所有字段和值 |
| hset key field value | 将哈希表 key 中的字段 field 的值设为 value |
| hsetnx key field value | 只有在字段 field 不存在时,设置哈希表字段的值 |
| hincrby key field increment | 为哈希表 key 中的指定字段的整数值加上增量 increment |
| hincrbyfloat key field increment | 为哈希表 key 中的指定字段的浮点数值加上增量 increment |
| hkeys key | 获取所有哈希表中的字段 |
| hlen key | 获取哈希表中字段的数量 |
| hmget key field [field2...] | 获取所有给定字段的值 |
| hmset key field value [field2 value2...] | 同时将多个 field-value (域-值)对设置到哈希表 key 中 |
| havls key | 获取哈希表中所有值 |
| hscan key cursor [match pattern] [count count ] | 迭代哈希表中的键值对 |
设置hash
如果hash表不存在,则返回1, 如果hash表已存在,则覆盖旧的的field值,并返回0
127.0.0.1:6379> hset hash sql mysql
(integer) 1
127.0.0.1:6379> hget hash sql
"mysql"
127.0.0.1:6379> hset hash sql redis
(integer) 0
127.0.0.1:6379> hget hash sql
"redis"
127.0.0.1:6379>
获取hash的值
127.0.0.1:6379> type queues:orderWarning:delayed
zset
127.0.0.1:6379> hget queues:orderWarning:delayed order
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379>
127.0.0.1:6379> type hash
hash
127.0.0.1:6379> hkeys hash
1) "sql"
127.0.0.1:6379> hget hash sql # 获取指定的key 的field的值
"redis"
127.0.0.1:6379> hget hash mysql
(nil)
127.0.0.1:6379> hgetall orderWarning # 获取所有的 key 与 field 的值
1) "127.0.0.1_1545801485"
2) "{\"mem_id\":18,\"goods_id\":1078,\"out_trade_no\":1545801485,\"order_type\":2,\"nick\":\"Chase\",\"phone\":15011996662,\"goods_name\":\"\\u963f\\u4e22\\u3002\\u3002\\u3002\"}"
3) "127.0.0.1_1545801458"
4) "{\"mem_id\":18,\"goods_id\":1078,\"out_trade_no\":1545801458,\"order_type\":2,\"nick\":\"Chase\",\"phone\":15011996662,\"goods_name\":\"\\u963f\\u4e22\\u3002\\u3002\\u3002\"}"
5) "_1545816179"
6) "{\"mem_id\":18,\"goods_id\":1078,\"out_trade_no\":1545816179,\"order_type\":2,\"nick\":\"Chase\",\"phone\":15011996662,\"goods_name\":\"\\u963f\\u4e22\\u3002\\u3002\\u3002\"}"
7) "_1545817734"
8) "{\"mem_id\":18,\"goods_id\":1078,\"out_trade_no\":1545817734,\"order_type\":2,\"nick\":\"Chase\",\"phone\":15011996662,\"goods_name\":\"\\u963f\\u4e22\\u3002\\u3002\\u3002\"}"
9) "_1545816123"
10) "{\"mem_id\":18,\"goods_id\":1078,\"out_trade_no\":1545816123,\"order_type\":2,\"nick\":\"Chase\",\"phone\":15011996662,\"goods_name\":\"\\u963f\\u4e22\\u3002\\u3002\\u3002\"}"
11) "_1545816085"
12) "{\"mem_id\":18,\"goods_id\":1078,\"out_trade_no\":1545816085,\"order_type\":2,\"nick\":\"Chase\",\"phone\":15011996662,\"goods_name\":\"\\u963f\\u4e22\\u3002\\u3002\\u3002\"}"
127.0.0.1:6379>
127.0.0.1:6379> hvals orderWarning # 获取所有的field的值
1) "{\"mem_id\":18,\"goods_id\":1078,\"out_trade_no\":1545801485,\"order_type\":2,\"nick\":\"Chase\",\"phone\":15011996662,\"goods_name\":\"\\u963f\\u4e22\\u3002\\u3002\\u3002\"}"
2) "{\"mem_id\":18,\"goods_id\":1078,\"out_trade_no\":1545801458,\"order_type\":2,\"nick\":\"Chase\",\"phone\":15011996662,\"goods_name\":\"\\u963f\\u4e22\\u3002\\u3002\\u3002\"}"
3) "{\"mem_id\":18,\"goods_id\":1078,\"out_trade_no\":1545816179,\"order_type\":2,\"nick\":\"Chase\",\"phone\":15011996662,\"goods_name\":\"\\u963f\\u4e22\\u3002\\u3002\\u3002\"}"
4) "{\"mem_id\":18,\"goods_id\":1078,\"out_trade_no\":1545817734,\"order_type\":2,\"nick\":\"Chase\",\"phone\":15011996662,\"goods_name\":\"\\u963f\\u4e22\\u3002\\u3002\\u3002\"}"
5) "{\"mem_id\":18,\"goods_id\":1078,\"out_trade_no\":1545816123,\"order_type\":2,\"nick\":\"Chase\",\"phone\":15011996662,\"goods_name\":\"\\u963f\\u4e22\\u3002\\u3002\\u3002\"}"
6) "{\"mem_id\":18,\"goods_id\":1078,\"out_trade_no\":1545816085,\"order_type\":2,\"nick\":\"Chase\",\"phone\":15011
查看hash是否存在
127.0.0.1:6379> hexists hash sql
(integer) 0
127.0.0.1:6379> hset hash sql mysql
(integer) 1
127.0.0.1:6379> hexists hash sql
(integer) 1
127.0.0.1:6379>
删除hash
hash表中key有多个field,删除field时只删除对应的field,如果key中只有一个field,删除field的同时把hash表删除,删除成功返回1, 失败返回0
127.0.0.1:6379> hkeys hash
1) "sql"
127.0.0.1:6379> keys *
1) "queues:orderWarning:delayed"
2) "hash"
3) "downtime"
4) "orderWarning"
127.0.0.1:6379> hdel hash php
(integer) 0
127.0.0.1:6379> hkeys hash
1) "sql"
127.0.0.1:6379> hset hash php php
(integer) 1
127.0.0.1:6379> hkeys hash
1) "sql"
2) "php"
127.0.0.1:6379> hdel hash sql
(integer) 1
127.0.0.1:6379> hkeys hash
1) "php"
127.0.0.1:6379> keys *
1) "queues:orderWarning:delayed"
2) "hash"
3) "downtime"
4) "orderWarning"
127.0.0.1:6379> hdel hash php
(integer) 1
127.0.0.1:6379> keys *
1) "queues:orderWarning:delayed"
2) "downtime"
3) "orderWarning"
127.0.0.1:6379>
获取hash表中key的个数
127.0.0.1:6379> hkeys hash
1) "sql"
2) "php"
127.0.0.1:6379> hkeys orderWarning
1) "127.0.0.1_1545801485"
2) "127.0.0.1_1545801458"
3) "_1545816179"
4) "_1545817734"
5) "_1545816123"
6) "_1545816085"
127.0.0.1:6379> hlen hash
(integer) 2
127.0.0.1:6379> hlen orderWarning
(integer) 6
127.0.0.1:6379>
列表(list)
命令与描述:
| 命令 | 描述 |
|---|---|
| blpop key1 [key2...] timeout | 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止 |
| brpop key1 [key2...] timeout | 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止 |
| brpoplpush source destination timeout | 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止 |
| lset key index value | 通过索引设置列表元素的值 |
| lindex key index | 通过索引获取列表中的元素 |
| linsert key before|after pivot value | 在列表的元素前或者后插入元素 |
| llen key | 获取列表长度 |
| lpop key | 移出并获取列表的第一个元素 |
| lpush key value1 [value2...] | 将一个或多个值插入到列表头部 |
| lpushx key value | 将一个值插入到已存在的列表头部 |
| lrange key start stop | 获取列表指定范围内的元素 |
| lrem key count value | 移除列表元素 |
| ltrim key start stop | 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除 |
| rpop key | 移除列表的最后一个元素,返回值为移除的元素。 |
| rpoplpush source destination | 移除列表的最后一个元素,并将该元素添加到另一个列表并返回 |
| rpush key value1 [value2...] | 在列表中添加一个或多个值 |
| rpushx key value | 为已存在的列表添加值 |
设置list的值
lset key index value 通过索引来设置元素的值。当索引参数超出范围,或对一个空列表进行 LSET 时,返回一个错误。
127.0.0.1:6379> rpush sql 'mysql'
(integer) 1
127.0.0.1:6379> rpush sql 'redis'
(integer) 2
127.0.0.1:6379> rpush sql 'mogodb'
(integer) 3
127.0.0.1:6379> rpush sql 'hello world'
(integer) 4
127.0.0.1:6379> lrange sql 0 -1
1) "mysql"
2) "redis"
3) "mogodb"
4) "hello world"
127.0.0.1:6379> lset sql 3 'sql lite'
OK
127.0.0.1:6379> lrange sql 0 -1
1) "mysql"
2) "redis"
3) "mogodb"
4) "sql lite"
127.0.0.1:6379>
在列表中添加值
命令用于将一个或多个值插入到列表的尾部(最右边)。如果列表不存在,一个空列表会被创建并执行 RPUSH 操作。 当列表存在但不是列表类型时,返回一个错误
127.0.0.1:6379> rpush sql 'mysql'
(integer) 1
127.0.0.1:6379> rpush sql 'redis'
(integer) 2
127.0.0.1:6379> rpush sql 'mogodb'
(integer) 3
127.0.0.1:6379> rpush sql 'hello world'
(integer) 4
127.0.0.1:6379> lrange sql 0 -1
1) "mysql"
2) "redis"
3) "mogodb"
4) "hello world"
获取区间的元素
返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
127.0.0.1:6379> lrange sql 0 -1
1) "mysql"
2) "redis"
3) "mogodb"
4) "sql lite"
127.0.0.1:6379> lrange sql 1 2
1) "redis"
2) "mogodb"
127.0.0.1:6379> lrange sql 0 -2
1) "mysql"
2) "redis"
3) "mogodb"
127.0.0.1:6379>
获取列表的长度
127.0.0.1:6379> lrange sql 0 -1
1) "mysql"
2) "redis"
3) "mogodb"
4) "sql lite"
127.0.0.1:6379> llen sql
(integer) 4
127.0.0.1:6379>
集合(set)
命令与描述:
| 命令 | 描述 |
|---|---|
| SADD key member1 [member2] | 向集合添加一个或多个成员 |
| SCARD key | 获取集合的成员数 |
| SDIFF key1 [key2] | 返回给定所有集合的差集 |
| SDIFFSTORE destination key1 [key2] | 返回给定所有集合的差集并存储在 destination 中 |
| SINTER key1 [key2] | 返回给定所有集合的交集 |
| SINTERSTORE destination key1 [key2] | 返回给定所有集合的交集并存储在 destination 中 |
| SISMEMBER key member | 判断 member 元素是否是集合 key 的成员 |
| SMEMBERS key | 返回集合中的所有成员 |
| SMOVE source destination member | 将 member 元素从 source 集合移动到 destination 集合 |
| SPOP key | 移除并返回集合中的一个随机元素 |
| SRANDMEMBER key [count] | 返回集合中一个或多个随机数 |
| SREM key member1 [member2] | 移除集合中一个或多个成员 |
| SUNION key1 [key2] | 返回所有给定集合的并集 |
| SUNIONSTORE destination key1 [key2] | 所有给定集合的并集存储在 destination 集合中 |
| SSCAN key cursor [MATCH pattern] [COUNT count] | 迭代集合中的元素 |
向集合中添加成员
127.0.0.1:6379> sadd myset 'hello'
(integer) 1
127.0.0.1:6379> sadd myset 'world'
(integer) 1
127.0.0.1:6379> sadd myset 'foo'
(integer) 1
127.0.0.1:6379> smembers myset
1) "hello"
2) "world"
3) "foo"
获取集合的成员数
127.0.0.1:6379> scard myset
(integer) 3
127.0.0.1:6379>
获取集合的差集
返回差集的结果集是第一个集合的差集
127.0.0.1:6379> smembers myset
1) "hello"
2) "world"
3) "foo"
127.0.0.1:6379> smembers myget
1) "php"
2) "redis"
3) "hello"
127.0.0.1:6379> sdiff myset myget
1) "world"
2) "foo"
127.0.0.1:6379>
获取集合的交集
127.0.0.1:6379> smembers myset
1) "hello"
2) "world"
3) "foo"
127.0.0.1:6379> smembers myget
1) "php"
2) "redis"
3) "hello"
127.0.0.1:6379> sinter myset myget
1) "hello"
127.0.0.1:6379>
判断 member 元素是否是集合 key 的成员
127.0.0.1:6379> smembers myset
1) "world"
2) "foo"
3) "hello"
127.0.0.1:6379> sismember myset hello
(integer) 1
127.0.0.1:6379> sismember myset footer
(integer) 0
127.0.0.1:6379
有序集合(sorted set)
命令与描述:
向集合中添加成员
127.0.0.1:6379> zadd myzset 1 'one'
(integer) 1
127.0.0.1:6379> zadd myzset 1 '1'
(integer) 1
127.0.0.1:6379> zadd myzset 2 'two'
(integer) 1
127.0.0.1:6379> zadd myzset 3 'three'
(integer) 1
127.0.0.1:6379> zrange myzset 0 -1
1) "1"
2) "one"
3) "two"
4) "three"
127.0.0.1:6379> zrange myzset 0 -1 WITHSCORES
1) "1"
2) "1"
3) "one"
4) "1"
5) "two"
6) "2"
7) "three"
8) "3"
获取有序集合的成员数
127.0.0.1:6379> zrange myzset 0 -1
1) "1"
2) "one"
3) "two"
4) "three"
127.0.0.1:6379> ZCARD myzset
(integer) 4
127.0.0.1:6379>
计算有序集合中指定分数区间的成员数量
127.0.0.1:6379> zrange myzset 0 -1 withscores
1) "1"
2) "1"
3) "one"
4) "1"
5) "two"
6) "2"
7) "three"
8) "3"
127.0.0.1:6379> zcount myzset 2 3
(integer) 2
127.0.0.1:6379> zcount myzset 1 1
(integer) 2
127.0.0.1:6379>