目录
前言
Redis 字符串类型(String)
Redis字符串命令
Redis 列表类型(List)
Redis 列表命令
Redis 集合(Set)
Redis 集合命令
Redis 有序集合(sorted set)
Redis 有序集合命令
Redis 哈希(Hash)
Redis hash 基本命令
Redis的基本数据类型,其中常用的有5种,String,List,Set,Sorted set,Hash(map)。
今天小二便说一下自己所理解的Redis的基本数据类型。
有缺点之处,望海涵,请指教。
redis 127.0.0.1:6379> SET mykey "redis" OK redis 127.0.0.1:6379> GET mykey "redis" |
在上面的例子中,SET
和GET
是redis中的命令,而mykey
是键的名称。
Redis字符串命令用于管理Redis中的字符串值。以下是使用Redis字符串命令的语法。
redis 127.0.0.1:6379> COMMAND KEY_NAME
示例
redis 127.0.0.1:6379> SET mykey "redis" OK redis 127.0.0.1:6379> GET mykey "redis" |
在上面的例子中,SET
和GET
是redis中的命令,而mykey
是键的名称。
下表列出了一些用于在Redis中管理字符串的基本命令。
编号 |
命令 |
描述说明 |
1 |
SET key value |
此命令设置指定键的值。 |
2 |
GET key |
获取指定键的值。 |
3 |
GETRANGE key start end |
获取存储在键上的字符串的子字符串。 |
4 |
GETSET key value |
设置键的字符串值并返回其旧值。 |
5 |
GETBIT key offset |
返回在键处存储的字符串值中偏移处的位值。 |
6 |
MGET key1 [key2..] |
获取所有给定键的值 |
7 |
SETBIT key offset value |
存储在键上的字符串值中设置或清除偏移处的位 |
8 |
SETEX key seconds value |
使用键和到期时间来设置值 |
9 |
SETNX key value |
设置键的值,仅当键不存在时 |
10 |
SETRANGE key offset value |
在指定偏移处开始的键处覆盖字符串的一部分 |
11 |
STRLEN key |
获取存储在键中的值的长度 |
12 |
MSET key value [key value …] |
为多个键分别设置它们的值 |
13 |
MSETNX key value [key value …] |
为多个键分别设置它们的值,仅当键不存在时 |
14 |
PSETEX key milliseconds value |
设置键的值和到期时间(以毫秒为单位) |
15 |
INCR key |
将键的整数值增加 |
16 |
INCRBY key increment |
将键的整数值按给定的数值增加 |
17 |
INCRBYFLOAT key increment |
将键的浮点值按给定的数值增加 |
18 |
DECR key |
将键的整数值减 |
19 |
DECRBY key decrement |
按给定数值减少键的整数值 |
20 |
APPEND key value |
将指定值附加到键 |
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
redis 127.0.0.1:6379> LPUSH runoobkey redis (integer) 1 redis 127.0.0.1:6379> LPUSH runoobkey mongodb (integer) 2 redis 127.0.0.1:6379> LPUSH runoobkey mysql (integer) 3 redis 127.0.0.1:6379> LRANGE runoobkey 0 10 1) "mysql" 2) "mongodb" 3) "redis" |
下表列出了列表相关的基本命令:
序号 |
命令及描述 |
1 |
BLPOP key1 [key2 ] timeout |
2 |
BRPOP key1 [key2 ] timeout |
3 |
BRPOPLPUSH source destination timeout |
4 |
LINDEX key index |
5 |
LINSERT key BEFORE|AFTER pivot value |
6 |
LLEN key |
7 |
LPOP key |
8 |
LPUSH key value1 [value2] |
9 |
LPUSHX key value |
10 |
LRANGE key start stop |
11 |
LREM key count value |
12 |
LSET key index value |
13 |
LTRIM key start stop |
14 |
RPOP key |
15 |
RPOPLPUSH source destination |
16 |
RPUSH key value1 [value2] |
17 |
RPUSHX key value |
Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
实例
redis 127.0.0.1:6379> SADD runoobkey redis (integer) 1 redis 127.0.0.1:6379> SADD runoobkey mongodb (integer) 1 redis 127.0.0.1:6379> SADD runoobkey mysql (integer) 1 redis 127.0.0.1:6379> SADD runoobkey mysql (integer) 0 redis 127.0.0.1:6379> SMEMBERS runoobkey 1) "mysql" 2) "mongodb" 3) "redis" |
在以上实例中我们通过 SADD 命令向名为 runoobkey 的集合插入的三个元素。
下表列出了 Redis 集合基本命令:
序号 |
命令及描述 |
1 |
SADD key member1 [member2] |
2 |
SCARD key |
3 |
SDIFF key1 [key2] |
4 |
SDIFFSTORE destination key1 [key2] |
5 |
SINTER key1 [key2] |
6 |
SINTERSTORE destination key1 [key2] |
7 |
SISMEMBER key member |
8 |
SMEMBERS key |
9 |
SMOVE source destination member |
10 |
SPOP key |
11 |
SRANDMEMBER key [count] |
12 |
SREM key member1 [member2] |
13 |
SUNION key1 [key2] |
14 |
SUNIONSTORE destination key1 [key2] |
15 |
SSCAN key cursor [MATCH pattern] [COUNT count] |
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
实例
redis 127.0.0.1:6379> ZADD runoobkey 1 redis (integer) 1 redis 127.0.0.1:6379> ZADD runoobkey 2 mongodb (integer) 1 redis 127.0.0.1:6379> ZADD runoobkey 3 mysql (integer) 1 redis 127.0.0.1:6379> ZADD runoobkey 3 mysql (integer) 0 redis 127.0.0.1:6379> ZADD runoobkey 4 mysql (integer) 0 redis 127.0.0.1:6379> ZRANGE runoobkey 0 10 WITHSCORES 1) "redis" 2) "1" 3) "mongodb" 4) "2" 5) "mysql" 6) "4" |
在以上实例中我们通过命令 ZADD 向 redis 的有序集合中添加了三个值并关联上分数。
下表列出了 redis 有序集合的基本命令:
序号 |
命令及描述 |
1 |
ZADD key score1 member1 [score2 member2] |
2 |
ZCARD key |
3 |
ZCOUNT key min max |
4 |
ZINCRBY key increment member |
5 |
ZINTERSTORE destination numkeys key [key ...] |
6 |
ZLEXCOUNT key min max |
7 |
ZRANGE key start stop [WITHSCORES] |
8 |
ZRANGEBYLEX key min max [LIMIT offset count] |
9 |
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] |
10 |
ZRANK key member |
11 |
ZREM key member [member ...] |
12 |
ZREMRANGEBYLEX key min max |
13 |
ZREMRANGEBYRANK key start stop |
14 |
ZREMRANGEBYSCORE key min max |
15 |
ZREVRANGE key start stop [WITHSCORES] |
16 |
ZREVRANGEBYSCORE key max min [WITHSCORES] |
17 |
ZREVRANK key member |
18 |
ZSCORE key member |
19 |
ZUNIONSTORE destination numkeys key [key ...] |
20 |
ZSCAN key cursor [MATCH pattern] [COUNT count] |
Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。
实例
127.0.0.1:6379> HMSET runoobkey name "redis tutorial" description "redis basic commands for caching" likes 20 visitors 23000 OK 127.0.0.1:6379> HGETALL runoobkey 1) "name" 2) "redis tutorial" 3) "description" 4) "redis basic commands for caching" 5) "likes" 6) "20" 7) "visitors" 8) "23000" |
hset key mapHey MapValue
在以上实例中,我们设置了 redis 的一些描述信息(name, description, likes, visitors) 到哈希表的 runoobkey 中。
下表列出了 redis hash 基本的相关命令:
序号 |
命令及描述 |
1 |
HDEL key field2 [field2] |
2 |
HEXISTS key field |
3 |
HGET key field |
4 |
HGETALL key |
5 |
HINCRBY key field increment |
6 |
HINCRBYFLOAT key field increment |
7 |
HKEYS key |
8 |
HLEN key |
9 |
HMGET key field1 [field2] |
10 |
HMSET key field1 value1 [field2 value2 ] |
11 |
HSET key field value |
12 |
HSETNX key field value |
13 |
HVALS key |
14 |
HSCAN key cursor [MATCH pattern] [COUNT count] |