redis数据类型和操作指令
redis存储数据是key:value的形式,其中value一共支持五种数据类型:string、hash、list、set、zset
1、string:最常见的数据类型,就是字符串
- SET key value 此命令设置指定键的值。
- GET key 获取指定键的值。
- GETRANGE key start end 获取存储在键上的字符串的子字符串。
- GETSET key value 设置键的字符串值并返回其旧值。
- GETBIT key offset 返回在键处存储的字符串值中偏移处的位值。
- MGET key1 [key2..] 获取所有给定键的值
- SETBIT key offset value 存储在键上的字符串值中设置或清除偏移处的位
- SETEX key seconds value 使用键和到期时间来设置值
- SETNX key value 设置键的值,仅当键不存在时
- SETRANGE key offset value 在指定偏移处开始的键处覆盖字符串的一部分
- STRLEN key 获取存储在键中的值的长度
- MSET key value [key value …] 为多个键分别设置它们的值
- MSETNX key value [key value …] 为多个键分别设置它们的值,仅当键不存在时
- PSETEX key milliseconds value 设置键的值和到期时间(以毫秒为单位)
- INCR key 将键的整数值增加1
- INCRBY key increment 将键的整数值按给定的数值增加
- INCRBYFLOAT key increment 将键的浮点值按给定的数值增加
- DECR key 将键的整数值减1
- DECRBY key decrement 按给定数值减少键的整数值
- APPEND key value 将指定值附加到键
2、hash:是字符串字段和字符串值之间的映射(类似于PHP中的数组类型)。 因此,它们是表示对象的完美数据类型。在Redis中,每个哈希(散列)可以存储多达4亿个键-值对
- HDEL key field2 [field2] 删除一个或多个哈希字段。
- HEXISTS key field 判断是否存在散列字段。
- HGET key field 获取存储在指定键的哈希字段的值。
- HGETALL key 获取存储在指定键的哈希中的所有字段和值
- HINCRBY key field increment 将哈希字段的整数值按给定数字增加
- HINCRBYFLOAT key field increment 将哈希字段的浮点值按给定数值增加
- HKEYS key 获取哈希中的所有字段
- HLEN key 获取散列中的字段数量
- HMGET key field1 [field2] 获取所有给定哈希字段的值
- HMSET key field1 value1 [field2 value2 ] 为多个哈希字段分别设置它们的值
- HSET key field value 设置散列字段的字符串值
- HSETNX key field value 仅当字段不存在时,才设置散列字段的值
- HVALS key 获取哈希中的所有值
3、list:Redis列表只是字符串列表,按插入顺序排序。可以在列表的头部或尾部添加Redis列表中的元素。列表的最大长度为2^32 - 1
个元素(即4294967295
,每个列表可存储超过40亿个元素)。
- BLPOP key1 [key2 ] timeout 删除并获取列表中的第一个元素,或阻塞,直到有一个元素可用
- BRPOP key1 [key2 ] timeout 删除并获取列表中的最后一个元素,或阻塞,直到有一个元素可用
- BRPOPLPUSH source destination timeout 从列表中弹出值,将其推送到另一个列表并返回它; 或阻塞,直到一个可用
- LINDEX key index 通过其索引从列表获取元素
- LINSERT key BEFORE/AFTER pivot value 在列表中的另一个元素之前或之后插入元素
- LLEN key 获取列表的长度
- LPOP key 删除并获取列表中的第一个元素
- LPUSH key value1 [value2] 将一个或多个值添加到列表
- LPUSHX key value 仅当列表存在时,才向列表添加值
- LRANGE key start stop 从列表中获取一系列元素
- LREM key count value 从列表中删除元素
- LSET key index value 通过索引在列表中设置元素的值
- LTRIM key start stop 修剪列表的指定范围
- RPOP key 删除并获取列表中的最后一个元素
- RPOPLPUSH source destination 删除列表中的最后一个元素,将其附加到另一个列表并返回
- RPUSH key value1 [value2] 将一个或多个值附加到列表
- RPUSHX key value 仅当列表存在时才将值附加到列表
4、set:Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
- SADD key member1 [member2] 向集合添加一个或多个成员
- SCARD key 获取集合的成员数
- SDIFF key1 [key2] 返回给定所有集合的差集
- SDIFFSTORE destination key1 [key2] 返回给定所有集合的差集并存储在 destination 中
- SINTER key1 [key2] 返回给定所有集合的交集
- SINTERSTORE destination key1 [key2] 返回给定所有集合的交集并存储在 destination 中
- SISMEMBER key member 判断 member 元素是否是集合 key 的成员
- SMEMBERS key 返回集合中的所有成员
- SMOVE source destination member 将 member 元素从 source 集合移动到 destination 集合
- SPOP key 移除并返回集合中的一个随机元素
- SRANDMEMBER key [count] 返回集合中一个或多个随机数
- SREM key member1 [member2] 移除集合中一个或多个成员
- SUNION key1 [key2] 返回所有给定集合的并集
- SUNIONSTORE destination key1 [key2] 所有给定集合的并集存储在 destination 集合中
- SSCAN key cursor [MATCH pattern] [COUNT count] 迭代集合中的元素
5、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
- ZINTERSTORE destination numkeys key [key ...] 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
- ZLEXCOUNT key min max 在有序集合中计算指定字典区间内成员数量
- ZRANGE key start stop [WITHSCORES] 通过索引区间返回有序集合成指定区间内的成员
- ZRANGEBYLEX key min max [LIMIT offset count] 通过字典区间返回有序集合的成员
- ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] 通过分数返回有序集合指定区间内的成员
- ZRANK key member 返回有序集合中指定成员的索引
- ZREM key member [member ...] 移除有序集合中的一个或多个成员
- ZREMRANGEBYLEX key min max 移除有序集合中给定的字典区间的所有成员
- ZREMRANGEBYRANK key start stop 移除有序集合中给定的排名区间的所有成员
- ZREMRANGEBYSCORE key min max 移除有序集合中给定的分数区间的所有成员
- ZREVRANGE key start stop [WITHSCORES] 返回有序集中指定区间内的成员,通过索引,分数从高到底
- ZREVRANGEBYSCORE key max min [WITHSCORES] 返回有序集中指定分数区间内的成员,分数从高到低排序
- ZREVRANK key member 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
- ZSCORE key member 返回有序集中,成员的分数值
- ZUNIONSTORE destination numkeys key [key ...] 计算给定的一个或多个有序集的并集,并存储在新的 key 中
- ZSCAN key cursor [MATCH pattern] [COUNT count] 迭代有序集合中的元素(包括元素成员和元素分值)