一.五大数据类型简介

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
String(字符串)
string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。
string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。
string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。
Hash(哈希)
Redis hash 是一个键值(key=>value)对集合。
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
List(列表)
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
Set(集合)
Redis 的 Set 是 string 类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
zset(sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。

二.哪里去获取redis常见数据类型操作命令

http://redisdoc.com/

三.五大数据类型相关命令

1.Redis_key

命令

解释

keys *

列出所有key

exists key的名字

判断某个key是否存在,返回值1存在,返回值0不存在

move key db

当前库就没有了,被移除到另一个库

del key

删除

expire key 秒钟

为给定的key设置过期时间

ttl key

查看还有多少秒过期,-1表示永不过期,-2表示已过期

type key

查看key是什么类型

2.字符串(String)

命令

解释

APPEND key value

如果 key 已经存在并且是一个字符串, APPEND 命令将指定的 value 追加到该 key 原来值(value)的末尾。

STRLEN key

返回 key 所储存的字符串值的长度。

INCR key

将 key 中储存的数字值增一。

DECR key

将 key 中储存的数字值减一。

INCRBY key increment

将 key 所储存的值加上给定的增量值(increment) 。

DECRBY key decrement

key 所储存的值减去给定的减量值(decrement) 。

GETRANGE key start end

返回 key 中字符串值的子字符

SETRANGE key offset value

用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。

SETEX key seconds value

将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。

SETNX key value

只有在 key 不存在时设置 key 的值。可以防覆盖

MSET key value [key value …]

同时设置一个或多个 key-value 对。

MGET key key…

同时获取多个value

3.列表(List)

命令

解释

LPUSH key value1 [value2]

将一个或多个值插入到列表头部

RPUSH key value1 [value2]

在列表中添加一个或多个值

LRANGE key value1 value2

将列表第value1到value2列出来,如LRANGE list1 0 -1 从第零个元素到最后都列出来

LPOP key

移出并获取列表的第一个元素

RPOP key

移除列表的最后一个元素,返回值为移除的元素。

LINDEX key index

通过索引获取列表中的元素

LTRIM key start stop

对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。

LLEN key

获取列表长度

RPOPLPUSH key1 key2

将key1列表中的最后一位移到key2列表的头

LSET key index value

通过索引设置列表元素的值

它是一个字符串链表,left,right都可以添加
如果键不存在,创建新的链表
如果键已存在,新增内容
如果值全部移除,对应的键也就消失了
链表的头和尾操作效率都是极高的,但是在中间就不行了

4.集合(set)

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

命令

解释

SADD key member1 [member2]

向集合添加一个或多个成员

SISMEMBER key member

判断 member 元素是否是集合 key 的成员

SMEMBERS key

返回集合中的所有成员

SCARD key

获取集合的成员数

SREM key member1 [member2]

移除集合中一个或多个成员

SPOP key

移除并返回集合中的一个随机元素

SMOVE key1 key2 key1中的值

将元素从key1集合移动到key2集合

SDIFF key1 key2

差集

SINTER key1 key2

交集

SUNION key1 key2

并集

5.哈希(hash)

Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)
KV模式不变,但V是一个键值对

命令

解释

HSET key field value

将哈希表 key 中的字段 field 的值设为 value 。如HSET user id 11

HGET key field

获取存储在哈希表中指定字段的值。如HGET user id

HMSET key field1 value1 [field2 value2 ]

同时将多个 field-value (域-值)对设置到哈希表 key 中。如HMSET customer id 02 age 16 name zhangshan

HMGET key field1 [field2]

获取所有给定字段的值

HGETALL key

获取在哈希表中指定 key 的所有字段和值

HDEL key field1 [field2]

删除一个或多个哈希表字段

HLEN key

获取哈希表中字段的数量

HEXISTS key field

查看哈希表 key 中,指定的字段是否存在。

HKEYS key

获取所有哈希表中的字段

HVALS key

获取哈希表中所有值

HINCRBY key field increment

为哈希表 key 中的指定字段的整数值加上增量 increment 。

HINCRBYFLOAT key field increment

为哈希表 key 中的指定字段的浮点数值加上增量 increment 。

HSETNX key field value

只有在字段 field 不存在时,设置哈希表字段的值。

6.有序集合zset

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

命令

解释

ZADD key score1 member1 [score2 member2]

向有序集合添加一个或多个成员,或者更新已存在成员的分数

ZCARD key

获取有序集合的成员数

ZCOUNT key min max

计算在有序集合中指定区间分数的成员数

ZINCRBY key increment member

有序集合中对指定成员的分数加上增量 increment

ZREM key member [member …]

移除有序集合中的一个或多个成员

ZSCORE key member

返回有序集中,成员的分数值

ZREVRANGE key start stop [WITHSCORES]

返回有序集中指定区间内的成员,通过索引,分数从高到低

ZREVRANGEBYSCORE key max min [WITHSCORES]

返回有序集中指定分数区间内的成员,分数从高到低排序