基本用法
Redis 键(key)
Redis 键命令用于管理 redis 的键。
Redis DEL 命令
Redis DEL 命令用于删除已存在的键。不存在的 key 会被忽略。
redis 127.0.0.1:6379> DEL KEY_NAME
在以上实例中 DEL 是一个命令, KEY_NAME 是一个键。 如果键被删除成功,命令执行后输出 (integer) 1,否则将输出 (integer) 0
Redis EXISTS 命令
Redis EXISTS 命令用于检查给定 key 是否存在。
redis 127.0.0.1:6379> EXISTS KEY_NAME
若 key 存在返回 1 ,否则返回 0 。
Redis Expire 命令
Redis Expire 命令用于设置 key 的过期时间,key 过期后将不再可用。单位以秒计。
redis 127.0.0.1:6379> Expire KEY_NAME TIME_IN_SECONDS
设置成功返回 1 。 当 key 不存在或者不能为 key 设置过期时间时(比如在低于 2.1.3 版本的 Redis 中你尝试更新 key 的过期时间)返回 0 。
Redis Type 命令
Redis Type 命令用于返回 key 所储存的值的类型。
redis 127.0.0.1:6379> TYPE KEY_NAME
返回 key 的数据类型,数据类型有:
- none (key不存在)
- string (字符串)
- list (列表)
- set (集合)
- zset (有序集)
- hash (哈希表)
Redis 字符串(String)
Redis 字符串数据类型的相关命令用于管理 redis 字符串值
Redis SET 命令
Redis SET 命令用于设置给定 key 的值。如果 key 已经存储其他值, SET 就覆写旧值,且无视类型。
redis 127.0.0.1:6379> SET KEY_NAME VALUE
OK
在 Redis 2.6.12 以前版本, SET 命令总是返回 OK 。
从 Redis 2.6.12 版本开始, SET 在设置操作成功完成时,才返回 OK
Redis Get 命令
Redis Get 命令用于获取指定 key 的值。
redis> GET db
(nil)
redis> SET db redis
OK
redis> GET db
"redis"
返回 key 的值,如果 key 不存在时,返回 nil。 如果 key 不是字符串类型,那么返回一个错误。
Redis Incrby 命令
Redis Incrby 命令将 key 中储存的数字加上指定的增量值。
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCRBY 命令。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
本操作的值限制在 64 位(bit)有符号数字表示之内。
redis> SET rank 50
OK
redis> INCRBY rank 20
(integer) 70
redis> GET rank
"70"
加上指定的增量值之后, key 的值。
Redis Decrby 命令
Redis Decrby 命令将 key 所储存的值减去指定的减量值。
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECRBY 操作。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
本操作的值限制在 64 位(bit)有符号数字表示之内。
redis> SET count 100
OK
redis> DECRBY count 20
(integer) 80
减去指定减量值之后, key 的值。
Redis 哈希(Hash)
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。
Redis Hset 命令
Redis Hset 命令用于为哈希表中的字段赋值 。
如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。
如果字段已经存在于哈希表中,旧值将被覆盖。
redis 127.0.0.1:6379> HSET myhash field1 "foo"
OK
如果字段是哈希表中的一个新建字段,并且值设置成功,返回 1 。 如果哈希表中域字段已经存在且旧值已被新值覆盖,返回 0 。
Redis Hget 命令
Redis Hget 命令用于返回哈希表中指定字段的值。
redis> HGET myhash field1
"foo"
返回给定字段的值。如果给定的字段或 key 不存在时,返回 nil 。
Redis Hgetall 命令
Redis Hgetall 命令用于返回哈希表中,所有的字段和值。
在返回值里,紧跟每个字段名(field name)之后是字段的值(value),所以返回值的长度是哈希表大小的两倍。
redis> HSET myhash field1 "Hello"
(integer) 1
redis> HSET myhash field2 "World"
(integer) 1
redis> HGETALL myhash
1) "field1"
2) "Hello"
3) "field2"
4) "World"
redis>
以列表形式返回哈希表的字段及字段值。 若 key 不存在,返回空列表。
Redis 列表(List)
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
Redis Rpush 命令
Redis Rpush 命令用于将一个或多个值插入到列表的尾部(最右边)。
如果列表不存在,一个空列表会被创建并执行 RPUSH 操作。 当列表存在但不是列表类型时,返回一个错误。
注意:在 Redis 2.4 版本以前的 RPUSH 命令,都只接受单个 value 值。
redis 127.0.0.1:6379> RPUSH mylist "hello"
(integer) 1
redis 127.0.0.1:6379> RPUSH mylist "hello"
(integer) 2
redis 127.0.0.1:6379> RPUSH mylist "foo"
(integer) 3
redis 127.0.0.1:6379> RPUSH mylist "bar"
(integer) 4
执行 RPUSH 操作后,列表的长度。
Redis Ltrim 命令
Redis Ltrim 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
下标 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
redis 127.0.0.1:6379> LRANGE mylist 0 -1
1) "hello"
2) "foo"
3) "bar"
命令执行成功时,返回 ok 。
Redis 集合(Set)
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
Redis Sadd 命令
Redis Sadd 命令将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略。
假如集合 key 不存在,则创建一个只包含添加的元素作成员的集合。
当集合 key 不是集合类型时,返回一个错误。
注意:在 Redis2.4 版本以前, SADD 只接受单个成员值。
redis 127.0.0.1:6379> SADD myset "hello"
(integer) 1
redis 127.0.0.1:6379> SADD myset "foo"
(integer) 1
redis 127.0.0.1:6379> SADD myset "hello"
(integer) 0
被添加到集合中的新元素的数量,不包括被忽略的元素。
Redis Smembers 命令
Redis Smembers 命令返回集合中的所有的成员。 不存在的集合 key 被视为空集合。
redis 127.0.0.1:6379> SMEMBERS myset1
1) "World"
2) "Hello"
集合中的所有成员。
Redis 有序集合(sorted set)
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
Redis Zadd 命令
Redis Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中。
如果某个成员已经是有序集的成员,那么更新这个成员的分数值,并通过重新插入这个成员元素,来保证该成员在正确的位置上。
分数值可以是整数值或双精度浮点数。
如果有序集合 key 不存在,则创建一个空的有序集并执行 ZADD 操作。
当 key 存在但不是有序集类型时,返回一个错误。
注意: 在 Redis 2.4 版本以前, ZADD 每次只能添加一个元素。
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 1 "uno"
(integer) 1
redis> ZADD myzset 2 "two" 3 "three"
(integer) 2
被成功添加的新成员的数量,不包括那些被更新的、已经存在的成员。
Redis Zcount 命令
Redis Zcount 命令用于计算有序集合中指定分数区间的成员数量。
redis 127.0.0.1:6379> ZCOUNT myzset 1 3
(integer) 4
分数值在 min 和 max 之间的成员的数量。
Redis Zrange 命令
Redis Zrange 返回有序集中,指定区间内的成员。
其中成员的位置按分数值递增(从小到大)来排序。
具有相同分数值的成员按字典序(lexicographical order )来排列。
如果你需要成员按
值递减(从大到小)来排列,请使用 ZREVRANGE 命令。
下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。
你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
redis 127.0.0.1:6379> ZRANGE salary 0 -1 WITHSCORES # 显示整个有序集成员
1) "jack"
2) "3500"
3) "tom"
4) "5000"
5) "boss"
6) "10086"
指定区间内,带有分数值(可选)的有序集成员的列表。
Redis Zrevrange 命令
Redis Zrevrange 命令返回有序集中,指定区间内的成员。
其中成员的位置按分数值递减(从大到小)来排列。
具有相同分数值的成员按字典序的逆序(reverse lexicographical order)排列。
除了成员按分数值递减的次序排列这一点外, ZREVRANGE 命令的其他方面和 ZRANGE 命令一样。
redis 127.0.0.1:6379> ZRANGE salary 0 -1 WITHSCORES # 递增排列
1) "peter"
2) "3500"
3) "tom"
4) "4000"
5) "jack"
6) "5000"
redis 127.0.0.1:6379> ZREVRANGE salary 0 -1 WITHSCORES # 递减排列
1) "jack"
2) "5000"
3) "tom"
4) "4000"
5) "peter"
6) "3500"
指定区间内,带有分数值(可选)的有序集成员的列表。
Redis Zscore 命令
Redis Zscore 命令返回有序集中,成员的分数值。 如果成员元素不是有序集 key 的成员,或 key 不存在,返回 nil 。
redis 127.0.0.1:6379> ZSCORE salary peter # 注意返回值是字符串
"3500"
成员的分数值,以字符串形式表示。