一.五大数据类型简介
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常见数据类型操作命令
三.五大数据类型相关命令
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] | 返回有序集中指定分数区间内的成员,分数从高到低排序 |