环境:
Redis:3.2.10 ; CentOS 6/7
摘要说明:
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合);
本章主要对这五种数据类型的基础介绍和使用;
步骤:
1.String(字符串)
a.基础介绍
string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
string类型是Redis最基本的数据类型,一个键最大能存储512MB。
b.常用语法
1>设置指定 key 的值(SET key value)
127.0.0.1:6379> set test 111111
OK
2>获取指定 key 的值(GET key )
127.0.0.1:6379> get test
"111111"
3>将给定 key 的值设为 value ,并返回 key 的旧值(old value)(GETSET key value)
127.0.0.1:6379> getset test 222222
"111111"
4>只有在 key 不存在时设置 key 的值(SETNX key value)
127.0.0.1:6379> setnx test 333333
(integer) 0
更多可参考:点击
2.Hash(哈希)
a.基础介绍
Redis hash 是一个键值(key=>value)对集合。
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
每个 hash 可以存储 232 -1 键值对(40多亿)
b.常用语法
下属中key表示一个hash的key即名称(唯一标识);field:value组成一组键值对作为hash的一个元素;
1>将哈希表 key 中的字段 field 的值设为 value (HSET key field value )
127.0.0.1:6379> hset myhash field1 111111
(integer) 1
2>获取存储在哈希表中指定字段的值(HGET key field )
127.0.0.1:6379> hget myhash field1
"111111"
3>查看哈希表 key 中,指定的字段是否存在(HEXISTS key field )
127.0.0.1:6379> hexists myhash field1
(integer) 1
4>为哈希表 key 中的指定字段的整数值加上增量 increment (HINCRBY key field increment )
127.0.0.1:6379> hset myhash field2 8
(integer) 1
127.0.0.1:6379> hget myhash field2
"8"
127.0.0.1:6379> hincrby myhash field2 -1
(integer) 7
127.0.0.1:6379> hget myhash field2
"7"
更多可参考:点击
3.List(列表)
a.基础介绍
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。
b.常用语法
下属中key表示一个list的key即名称(唯一标识);value作为List的一个元素;
1>在列表中添加一个或多个值(RPUSH key value1 [value2])
127.0.0.1:6379> rpush list1 11111
(integer) 1
127.0.0.1:6379> rpush list1 22222 33333
(integer) 3
2>移出并获取列表的第一个元素(LPOP key)
127.0.0.1:6379> lpop list1
"11111"
127.0.0.1:6379> lpop list1
"22222"
127.0.0.1:6379> lpop list1
"33333"
3>将一个或多个值插入到列表头部(LPUSH key value1 [value2])
127.0.0.1:6379> lpush list1 111111
(integer) 1
127.0.0.1:6379> lpush list1 222222 333333
(integer) 3
127.0.0.1:6379> lpop list1
"333333"
4>获取列表长度(LLEN key)
127.0.0.1:6379> llen list1
(integer) 2
更多可参考:点击
4.Set(集合)
a.基础介绍
Redis的Set是string类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
b.常用语法
下属中key表示一个set的key即名称(唯一标识); membe作为set的一个元素;
1>向集合添加一个或多个成员(SADD key member1 [member2])
127.0.0.1:6379> sadd set1 111111
(integer) 1
127.0.0.1:6379> sadd set1 222222 333333
(integer) 2
2>获取集合的成员数(SCARD key)
127.0.0.1:6379> scard set1
(integer) 3
3>返回给定所有集合的差集(SDIFF key1 [key2] )
127.0.0.1:6379> sadd set2 111111 222222 444444
(integer) 3
127.0.0.1:6379> sdiff set1 set2
1) "333333"
4>返回给定所有集合的交集(SINTER key1 [key2] )
127.0.0.1:6379> sinter set1 set2
1) "111111"
2) "222222"
5>返回集合中的所有成员(SMEMBERS key)
127.0.0.1:6379> smembers set1
1) "111111"
2) "222222"
3) "333333"
6>移除并返回集合中的一个随机元素(SPOP key )
127.0.0.1:6379> spop set1
"333333"
127.0.0.1:6379> smembers set1
1) "111111"
2) "222222"
更多可参考:点击
5.有序集合(sorted set)
a.基础介绍
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
b.常用语法
下属中key表示一个sorted set的key即名称(唯一标识); score+member作为sorted set的一个元素;
1>向有序集合添加一个或多个成员,或者更新已存在成员的分数(ZADD key score1 member1 [score2 member2])
127.0.0.1:6379> zadd ss1 1 111111
(integer) 1
127.0.0.1:6379> zadd ss1 2 222222
(integer) 1
127.0.0.1:6379> zadd ss1 1 222222 2 333333
(integer) 1
2>获取有序集合的成员数(ZCARD key)
127.0.0.1:6379> zcard ss1
(integer) 3
3>通过索引区间返回有序集合成指定区间内的成员(ZRANGE key start stop [WITHSCORES])
下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。
你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
127.0.0.1:6379> zrange ss1 0 0
1) "111111"
127.0.0.1:6379> zrange ss1 -1 0
(empty list or set)
127.0.0.1:6379> zrange ss1 0 -1
1) "111111"
2) "222222"
3) "333333"
127.0.0.1:6379> zrange ss1 0 1
1) "111111"
2) "222222"
4>返回有序集中,成员的分数值(ZSCORE key member)
127.0.0.1:6379> zscore ss1 111111
"1"
5>返回有序集中指定分数区间内的成员,分数从高到低排序(ZREVRANGEBYSCORE key max min [WITHSCORES] )
127.0.0.1:6379> zrevrangebyscore ss1 1 0
1) "222222"
2) "111111"
更多可参考:点击