目录
前言
Redis的基本数据类型,其中常用的有5种,String,List,Set,Sorted set,Hash(map)。
今天小二便说一下自己所理解的Redis的基本数据类型。
有缺点之处,望海涵,请指教。
Redis 字符串类型(String)
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字符串命令
下表列出了一些用于在Redis中管理字符串的基本命令。
编号 | 命令 | 描述说明 |
1 | 此命令设置指定键的值。 | |
2 | 获取指定键的值。 | |
3 | 获取存储在键上的字符串的子字符串。 | |
4 | 设置键的字符串值并返回其旧值。 | |
5 | 返回在键处存储的字符串值中偏移处的位值。 | |
6 | 获取所有给定键的值 | |
7 | 存储在键上的字符串值中设置或清除偏移处的位 | |
8 | 使用键和到期时间来设置值 | |
9 | 设置键的值,仅当键不存在时 | |
10 | 在指定偏移处开始的键处覆盖字符串的一部分 | |
11 | 获取存储在键中的值的长度 | |
12 | 为多个键分别设置它们的值 | |
13 | 为多个键分别设置它们的值,仅当键不存在时 | |
14 | 设置键的值和到期时间(以毫秒为单位) | |
15 | 将键的整数值增加 | |
16 | 将键的整数值按给定的数值增加 | |
17 | 将键的浮点值按给定的数值增加 | |
18 | 将键的整数值减 | |
19 | 按给定数值减少键的整数值 | |
20 | 将指定值附加到键 |
Redis 列表类型(List)
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" |
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)
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 集合命令
下表列出了 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 |
Redis 有序集合(sorted set)
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 有序集合命令
下表列出了 redis 有序集合的基本命令:
Redis 哈希(Hash)
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 基本命令
下表列出了 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] |