管理命令
(1) 启动Redis
>redis-server [--prot 6379]
–prot表示配置参数,不带的话按默认配置启动,也可以指定配置文件启动。
>redis-server [redis.conf]
(2) 连接服务
> redis-cli -h host -p port -a password
连接redis服务,参数可以省略。如果不写参数,默认连接的时本机的6379端口。
(3) 停止redis
> redis-cli shutdown
> kill redis-pid
这两条命令效果一样
客户端命令
(1) 查找key:KEYS pattern
127.0.0.1:6379> keys *test
1) "settest"
2) "listtest"
3) "test"
4) "hashtest"
查找所有符合给定模式的key。
匹配模式支持的通配符如下
符号 | 含义 |
---|---|
? | 匹配一个字符 |
* | 匹配任意个(包括0个)字符 |
[-] | 匹配区间内任一字符,如a[b-d]可以匹配"ab",“ac”,“ad” |
\ | 转义符,使用?可以匹配"?" 字符 |
(2) 判断key是否存在:EXISTS key
127.0.0.1:6379> exists test
(integer) 1
(3) 设置过期时间:EXPIRE key seconds
127.0.0.1:6379> EXPIRE test 5
(integer) 1
(4) 返回指定key的剩余生存时间:TTL key
127.0.0.1:6379> TTL test
(integer) -2
没有指定剩余时间时返回-1,key不存在时返回-2。
(7) 查询key所关联的value的类型:TYPE key
127.0.0.1:6379> TYPE settest
set
(8) 删除key:DEL key [key…]
127.0.0.1:6379> del settest
(integer) 1
可一次删除多个key
(9) 查看是否连接成功:ping [message]
127.0.0.1:6379> PING
PONG
String字符串
(1)设值:SET Key Value [EX seconds]
127.0.0.1:6379> SET test 111
OK
设置键值。如果key不存在,则在数据库中,新添加一个,如果key键已存在,并且保存了旧值,旧值会被覆盖。
EX seconds选项表示过期的事件,单位为秒。不设置,则表示key键永不过期
(2) 获取键值:GET key
127.0.0.1:6379> GET test
"111"
获取key对应的String值
(3) 批量设值:MSET Key Value[Key Value…]
127.0.0.1:6379> MSET test1 111 test2 222 test3 333
OK
一次性设置多个Key-Value值,相当于同时调用多次SET命令。这个操作是原子的,所有的Key键都是一次性设置的。如果同时运行两个MSET来设置相同的Key键,那么操作的结果只会是MSET中后一次的结果,而不是混杂的结果。
(4) 批量获取:MSETNX Key Value [Key Value…]
127.0.0.1:6379> MGET test1 test2 test3
1) "111"
2) "222"
3) "333"
一次性获取多个Value值。相对于多次使用GET命令获取单个值,减少了网络传输的次数,提升了性能。
(5) 批量添加:MSETNX Key Value [Key Value…]
127.0.0.1:6379> MSETNX test4 444 test5 555 test6 666
(integer) 1
一次性添加多个key-value。如果任何一个Key键已经存在,那么这和操作都不会执行。
(6) 获取长度:STRLEN Key
127.0.0.1:6379> STRLEN test1
(integer) 3
获取key键对应的String的长度,如果Key键对应的不是String,则报错。如果Key键不存在,则返回0。
(7) 为Key键对应的整数Value值增加1:INCR Key
127.0.0.1:6379> INCR test1
(integer) 112
(8) 为Key对应的整数Value值减少1:DECR Key
127.0.0.1:6379> DECR test1
(integer) 111
(9) 为Key对应的整数Value值增加Increment: INCRBY Key increment
127.0.0.1:6379> INCRBY test1 7
(integer) 118
(10) 为Key对应的整数Value值减少Decrement: DECRBY Key decrement
127.0.0.1:6379> DECRBY test1 6
(integer) 112
(11) 为Key对应的浮点数增加Increment:INCRBYFLOAT Key increment
127.0.0.1:6379> set float 1.0
OK
127.0.0.1:6379> INCRBYFLOAT float 10.01
"11.01"
List列表
(1) 右推入:RPUSH Key Value [Value…]
127.0.0.1:6379> RPUSH listtest a b c d e
(integer) 5
将一个或多个Value值依次推入到列表的尾部(右端)。
(2) 左推入:LPUSH Key Value [Value…]
127.0.0.1:6379> LPUSH listtest f g h i
(integer) 9
将一个或多个Value值,依次推入到列表的头部(左端)。
(3) RPOP右弹出:RPOP key
127.0.0.1:6379> RPOP listtest
"e"
从列表的尾部(右端)获取并移除一个元素。
(4) LPOP右弹出:LPOP key
127.0.0.1:6379> LPOP listtest
"e"
从列表的头部(左端)获取并移除一个元素。
(5) 获取列表的长度:LLEN Key
127.0.0.1:6379> LLEN listtest
(integer) 7
(6) 获取列表指定位置上的元素:LINDEX Key index
127.0.0.1:6379> LINDEX listtest 2
"f"
(7) 获取指定索引范围之内的所有元素:LRANGE Key start stop
127.0.0.1:6379> LRANGE listtest 0 3
1) "h"
2) "g"
3) "f"
4) "a"
(8) 设置指定索引上的元素:LSET Key index Value
127.0.0.1:6379> LSET listtest 3 m
OK
Hash哈希表
(1) 设置字段值:HSET Key Field Value
127.0.0.1:6379> HSET hashtest name lili
(integer) 1
同时可以存放多个字段-值
127.0.0.1:6379> HSET hashtest age 20 gener male
(integer) 2
给Field字段设置Value值时,如果Field字段,之前没有设置值,那么命令返回1;如果filed字段之前已经有关联值,那么命令用新值覆盖旧值,并返回0。
(2) 获取字段-值:HGET Key Field
127.0.0.1:6379> HGET hashtest name
"lili"
返回Field字段关联的Value值。如果Filed字段没有关联Value值,那么返回nil。
(3) 检查字段是否存在:HEXISTS Key Field
127.0.0.1:6379> HGET hashtest name
"lili"
检查指定的Field字段是否存在,存在返回1,否则返回0。
(4) 删除指定的字段:HDEL Key Field [Field…]
127.0.0.1:6379> HDEL hashtest name
(integer) 1
删除哈希表中,一个或多个指定的Field字段,以及这些字段关联的值。返回被删除的Field-Value对的数量。
(5) 获取所有的Field字段:HKEYS Key
127.0.0.1:6379> HKEYS hashtest
1) "age"
2) "gener"
(6) 获取所有的Value值:HVALS Key
127.0.0.1:6379> HVALS hashtest
1) "20"
2) "male"
SET集合
(1) 添加元素:SADD Key member [member…]
127.0.0.1:6379> SADD settest user0001
(integer) 1
可以向key集合中,添加一个或多个成员。
(2) 移除元素:SREM Key member [member…]
127.0.0.1:6379> SREM settest user0001
(integer) 1
从Set集合中移除一个或多个元素。
(3) 判断某个元素:SISMEMBER Key member
127.0.0.1:6379> SISMEMBER settest user001
(integer) 0
判断member元素是否为Key集合的成员。
(4) 获取集合的成员数:SCARD Key
127.0.0.1:6379> SCARD settest
(integer) 4
(5) 获取集合中的所有成员:SMEMBERS Key
127.0.0.1:6379> SMEMBERS settest
1) "user0003"
2) "user0002"
3) "user0001"
4) "user0004"
Zset有序集合
(1) 添加成员:ZADD Key score member [score member …]
127.0.0.1:6379> ZADD score 100 stu1 95 stu2 97 stu3
(integer) 3
向有序集合里面添加一个或多个成员。如果成员已存在,则更新成员对应的分数。
(2) 移除元素:ZREM key member [member…]
127.0.0.1:6379> ZREM score stu2
(integer) 1
从有序集合Key中移除一个或者多个成员。
(3) 取得分数:ZSCORE key member
127.0.0.1:6379> ZSCORE score stu1
"100"
从key关联的有序集合中,取得member成员的分数值。
(4) 取得成员排序:ZRANK key member
127.0.0.1:6379> ZRANK score stu3
(integer) 0
(5) 成员加分:ZINCRBY key incrememt member
127.0.0.1:6379> ZINCRBY score 2 stu3
"99"
在key对应的有序集合中,对指定成员的分数加上增量increment
(6) 区间获取:ZRANGE key min max [WITHSCORES] [LIMIT offset count ]
127.0.0.1:6379> ZRANGEBYSCORE score 97 100
1) "stu3"
2) "stu1"
从key对应的有序集合中,获取指定分数区间范围的成员。WITHSCORES 表示带上分数值返回。LIMIT选项,类似与mysql查询的limit选项,有offset和count两个参数值,表示返回的偏移量和成员数量。
(7) 获取成员数:ZCARD key
127.0.0.1:6379> ZCARD score
(integer) 2
(8) 区间计数:ZCOUNT key min max
127.0.0.1:6379> ZCOUNT score 99 100
(integer) 2
返回指定分数区间的成员数。