redis 数据类型及操做命令

Redis 数据类型

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。html

  • String(字符串)
    String是最经常使用、最简单的 key-value 键值对,value 不只能够是 String,也能够是数字。String在redis内部存储默认就是一个字符串,被redisObject所引用,当遇到incr,decr等操做时会转成数值型进行计算,此时redisObject的encoding字段为int。
    string 是 redis 最基本的类型,你能够理解成与 Memcached 如出一辙的类型,一个 key 对应一个 value。
    string 类型是二进制安全的。意思是 redis 的 string 能够包含任何数据。好比jpg图片或者序列化的对象。
    string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。

    SET key value 设置指定 key 的值
    GET key 获取指定 key 的值
    INCR key 将 key 中储存的数字值增一
    INCRBY key increment 将 key 所储存的值加上给定的增量值(increment)
    INCRBYFLOAT key increment 将 key 所储存的值加上给定的浮点增量值(increment)
    DECR key 将 key 中储存的数字值减一
    DECRBY key decrement key 所储存的值减去给定的减量值(decrement)
    APPEND key value 若是 key 已经存在而且是一个字符串, APPEND 命令将指定的 value 追加到该 key 原来值(value)的末尾
    DEL key [key ...] 删除key
    EXISTS key [key ...] key是否存在redis

  • Hash(哈希)
    Redis hash 是一个键值(key=>value)对集合。
    Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象
    Redis Hash对应Value内部实际就是一个HashMap,实际这里会有2种不一样实现,这个Hash的成员比较少时Redis为了节省内存会采用相似一维数组的方式来紧凑存储,而不会采用真正的HashMap结构,对应的value redisObject的encoding为zipmap,当成员数量增大时会自动转成真正的HashMap,此时encoding为ht。
    HSET key field value 为指定的key设定field/value
    HMSET key field value [field value ...] 设置key中的多个field/value
    HDEL key field1 [field2] 删除一个或多个哈希表字段
    HEXISTS key field 查看哈希表 key 中,指定的字段是否存在
    HGET key field 获取存储在哈希表中指定字段的值
    HMGET key field [field ...] 获取key中的多个field的值
    HGETALL key 获取在哈希表中指定 key 的全部字段和值
    HINCRBY key field increment 为哈希表 key 中的指定字段的整数值加上增量 increment
    HDEL key field [field ...] 删除一个或多个字段
    del key 删除整个hash
  • List(列表)
    Redis 列表是简单的字符串列表,按照插入顺序排序。你能够添加一个元素到列表的头部(左边)或者尾部(右边)
    Redis list的实现为一个双向链表,便可以支持反向查找和遍历,更方便操做,不过带来了部分额外的内存开销,Redis内部的不少实现,包括发送缓冲队列等也都是用的这个数据结构
    应用场景:
    Redis list的应用场景很是多,也是Redis最重要的数据结构之一,好比twitter的关注列表、粉丝列表等均可以用Redis的list结构来实现,再好比有的应用使用Redis的list类型实现一个简单的轻量级消息队列,生产者push,消费者pop/bpop
    LPUSH key value [value …] 将一个或多个值 value 插入到列表 key 的表头
    LPUSHX key value 将值 value 插入到列表 key 的表头,当且仅当 key 存在而且是一个列表
    RPUSH key value [value …] 将一个或多个值 value 插入到列表 key 的表尾(最右边)
    RPUSHX key value 将值 value 插入到列表 key 的表尾,当且仅当 key 存在而且是一个列表
    LPOP key 移除并返回列表 key 的头元素
    RPOP key 移除并返回列表 key 的尾元素
    LINDEX key index 返回列表 key 中,下标为 index 的元素
    LINSERT key BEFORE|AFTER pivot value 将值 value 插入到列表 key 当中,位于值 pivot 以前或以后
    LSET key index value 将列表 key 下标为 index 的元素的值设置为 value
    LRANGE key start stop 返回列表 key 中指定区间内的元素,能够为负数
    LTRIM key start stop 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间以内的元素都将被删除
    BLPOP key [key …] timeout 移出并获取列表的第一个元素, 若是列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
    BRPOP key1 [key2 ] timeout 移出并获取列表的最后一个元素, 若是列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
    LREM key count value 根据参数 count 的值,移除列表中与参数 value 相等的元素
    count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。
    count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。
    count = 0 : 移除表中全部与 value 相等的值。
  • 集合(Set)
    Redis的Set是string类型的无序集合。集合成员是惟一的,这就意味着集合中不能出现重复的数据。
    Redis中集合是经过哈希表实现的,因此添加,删除,查找的复杂度都是O(1)。
    集合中最大的成员数为 232 - 1 (4294967295, 每一个集合可存储40多亿个成员)。

    SADD key member [member …] 将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略
    SMEMBERS key 返回集合 key 中的全部成员
    SISMEMBER key member 判断 member 元素是否集合 key 的成员
    SPOP key 移除并返回集合中的一个随机元素
    SRANDMEMBER key [count] 若是命令执行时,只提供了 key 参数,那么返回集合中的一个随机元素
    若是 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。若是 count 大于等于集合基数,那么返回整个集合。
    若是 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现屡次,而数组的长度为 count 的绝对值
    SREM key member [member …] 移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略
    SCARD key 返回集合 key 的基数(集合中元素的数量)
    SINTER key [key …] 交集成员的列表
    SINTERSTORE destination key [key …] 这个命令相似于 SINTER key [key …] 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集
    SUNION key [key …] 并集成员的列表
    SDIFF key [key …] 返回一个集合的所有成员,该集合是全部给定集合之间的差集数组

  • 有序集合(sorted set)
    Redis 有序集合和集合同样也是string类型元素的集合,且不容许重复的成员。
    不一样的是每一个元素都会关联一个double类型的分数。redis正是经过分数来为集合中的成员进行从小到大的排序。
    有序集合的成员是惟一的,但分数(score)却能够重复。
    集合是经过哈希表实现的,因此添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每一个集合可存储40多亿个成员)。
    ZADD key score member [[score member] [score member] …] 将一个或多个 member 元素及其 score 值加入到有序集 key 当中
    ZRANGE key start stop [WITHSCORES] 返回有序集 key 中,指定区间内的成员
    ZSCORE key member 返回有序集 key 中,成员 member 的 score 值
    ZINCRBY key increment member 为有序集 key 的成员 member 的 score 值加上增量 increment
    ZCARD key 返回有序集 key 的基数
    ZCOUNT key min max 返回有序集 key 中, score 值在 min 和 max 之间(默认包括 score 值等于 min 或 max )的成员的数量
    ZREVRANGE key start stop [WITHSCORES] 返回有序集 key 中,指定区间内的成员
    ZRANK key member 返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递增(从小到大)顺序排列
    ZREM key member [member …] 移除有序集 key 中的一个或多个成员,不存在的成员将被忽略

参考:安全

相关文章
相关标签/搜索