redis中的五种数据类型和基本操作

  redis支持5种数据类型,分别是String,List,Hash,Set,Zset和Hash。
  
  redis是一个高性能的key-value数据库,在介绍它的5种数据类型之前,先介绍key的相关命令。
  

key—键

  通常用如下的键命令来管理redis的键:
  
  1 DEL key
  该命令用于在key存在时删除key。
  2 DUMP key
  序列化给定key,并返回被序列化的值。
  3 EXISTS key
  检查给定key是否存在。
  4 EXPIRE key seconds
  为给定key设置过期时间。
  5 EXPIREAT key timestamp
  EXPIREAT的作用和EXPIRE类似,都用于为key设置过期时间。不同在于EXPIREAT命令接受的时间参数是 UNIX 时间戳(unix timestamp)。
  6 PEXPIRE key milliseconds
  设置key的过期时间以毫秒计。
  7 PEXPIREAT key milliseconds-timestamp
  设置key过期时间的时间戳(unix timestamp) 以毫秒计
  8 KEYS pattern
  查找所有符合给定模式(pattern)的key 。
  9 MOVE key db
  将当前数据库的key移动到给定的数据库db当中。
  10 PERSIST key
  移除key的过期时间,key将持久保持。
  11 PTTL key
  以毫秒为单位返回key的剩余的过期时间。
  12 TTL key
  以秒为单位,返回给定key的剩余生存时间(TTL,time to live)。返回-1表示永不过期,返回-2表示已过期。
  13 RANDOMKEY
  从当前数据库中随机返回一个key 。
  14 RENAME key newkey
  修改key的名称
  15 RENAMENX key newkey
  仅当newkey不存在时,将key改名为newkey 。
  16 TYPE key
  返回key所储存的值的类型。

String-字符串

  String类型是redis最基本的数据类型,它是二进制安全的,即redis的String类型可以存放任何数据,比如图片或者序列化的对象。
  下面是用于管理String类型数据的相关命令:
  
  1 SET key value
  设置指定 key 的值
  2 GET key
  获取指定 key 的值。
  3 GETRANGE key start end
  返回 key 中字符串值的子字符。(下标从0开始,GETRANGE key 0 -1表示返回整个字符串)
  4 GETSET key value
  将给定 key 的值设为 value ,并返回 key 的旧值(old value)。
  5 GETBIT key offset
  对 key 所储存的字符串值,获取指定偏移量上的位(bit)。
  6 MGET key1 [key2..]
  获取所有(一个或多个)给定 key 的值。
  7 SETBIT key offset value
  对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。
  8 SETEX key seconds value
  将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。
  9 SETNX key value
  只有在 key 不存在时设置 key 的值。
  10 SETRANGE key offset value
  用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。
  11 STRLEN key
  返回 key 所储存的字符串值的长度。
  12 MSET key value [key value …]
  同时设置一个或多个 key-value 对。
  13 MSETNX key value [key value …]
  同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在,才能设置成功。
  14 PSETEX key milliseconds value
  这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位。
  15 INCR key
  将 key 中储存的数字值增一。
  16 INCRBY key increment
  将 key 所储存的值加上给定的增量值(increment) 。
  17 INCRBYFLOAT key increment
  将 key 所储存的值加上给定的浮点增量值(increment) 。
  18 DECR key
  将 key 中储存的数字值减一。
  19 DECRBY key decrement
  key 所储存的值减去给定的减量值(decrement) 。
  20 APPEND key value
  如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。
  
  

List-列表

  列表类型List是简单地字符串列表,它按照插入顺序进行排序,可以添加一个元素到列表的头部(左边)或者尾部(右边),其底层实际上是一个链表。
  List数据类型的相关命令如下:
  
  1 BLPOP key1 [key2 ] timeout
  移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
  2 BRPOP key1 [key2 ] timeout
  移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
  3 BRPOPLPUSH source destination timeout
  从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它;如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
  4 LINDEX key index
  通过索引获取列表中的元素
  5 LINSERT key BEFORE|AFTER pivot value
  在列表的元素前或者后插入元素
  6 LLEN key
  获取列表长度
  7 LPOP key
  从列表头部移出并获取第一个元素
  8 LPUSH key value1 [value2]
  将一个或多个值插入到列表头部
  9 LPUSHX key value
  将一个或多个值插入到已存在的列表头部
  10 LRANGE key start stop
  获取列表指定范围内的元素,LRANGE key 0 -1表示全部元素
  11 LREM key count value
  从列表头部开始移除指定个数和值的列表元素
  12 LSET key index value
  通过索引设置列表元素的值
  13 LTRIM key start stop
  对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
  14 RPOP key
  从列表尾部移出并获取第一个元素
  15 RPOPLPUSH source destination
  从列表尾部移除一个元素,放入到另一个列表的头部并返回。
  16 RPUSH key value1 [value2]
  将一个或多个值插入到列表尾部
  17 RPUSHX key value
  将一个或多个值插入到已存在的列表尾部
  
  操作示例:
  
  image_1b6p16trnemt8mj1e6r180r19n2p.png-30.1kB
  

Hash-哈希

  Redis的哈希类型是字符串字段和字符串值之间的映射,所以非常适合用于存储对象。
  
  Hash类型的相关命令如下:
  
  1 HDEL key field2 [field2]
  删除一个或多个哈希字段
  2 HEXISTS key field
  判断一个哈希字段存在与否
  3 HGET key field
  获取存储在指定的键散列字段的值
  4 HGETALL key
  让所有的字段和值在指定的键存储在一个哈希
  5 HINCRBY key field increment
  由给定数量增加的哈希字段的整数值
  6 HINCRBYFLOAT key field increment
  由给定的递增量哈希字段的浮点值
  7 HKEYS key
  获取所有在哈希字段
  8 HLEN key
  获取哈希字段数
  9 HMGET key field1 [field2]
  获得所有给定的哈希字段的值
  10 HMSET key field1 value1 [field2 value2 ]
  设置多个哈希字段的多个值
  11 HSET key field value
  设置哈希字段的字符串值
  12 HSETNX key field value
  设置哈希字段的值,仅当该字段不存在
  13 HVALS key
  获取在哈希中的所有值
  14 HSCAN key cursor [MATCH pattern] [COUNT count]
  增量迭代哈希字段及相关值
  
  操作示例:
  
  image_1b6p1nig31mpo1s3khh74793bb16.png-56.2kB
  

Set-集合

  Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
  
  Set类型的相关命令如下:
  
  1 SADD key member1 [member2]
  向集合添加一个或多个成员
  2 SCARD key
  获取集合的成员数
  3 SDIFF key1 [key2]
  返回给定所有集合的差集
  4 SDIFFSTORE destination key1 [key2]
  返回给定所有集合的差集并存储在 destination 中
  5 SINTER key1 [key2]
  返回给定所有集合的交集
  6 SINTERSTORE destination key1 [key2]
  返回给定所有集合的交集并存储在 destination 中
  7 SISMEMBER key member
  判断 member 元素是否是集合 key 的成员
  8 SMEMBERS key
  返回集合中的所有成员
  9 SMOVE source destination member
  将 member 元素从 source 集合移动到 destination 集合
  10 SPOP key
  移除并返回集合中的一个随机元素
  11 SRANDMEMBER key [count]
  返回集合中一个或多个随机数
  12 SREM key member1 [member2]
  移除集合中一个或多个成员
  13 SUNION key1 [key2]
  返回所有给定集合的并集
  14 SUNIONSTORE destination key1 [key2]
  所有给定集合的并集存储在 destination 集合中
  15 SSCAN key cursor [MATCH pattern] [COUNT count]
  迭代集合中的元素
  
  操作示例:
  
  image_1b6p2kl8e1q4ih6k1ioj1jc7sev1j.png-95.1kB

Zset-有序集合

  redis有序集合Zset类似于Set,不同之处在于每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
  有序集合的成员是唯一的,但分数(score)却可以重复。
  
  Zset类型的相关操作命令如下:
  
  1 ZADD key score1 member1 [score2 member2]
  向有序集合添加一个或多个成员,或者更新已存在成员的分数
  2 ZCARD key
  获取有序集合的成员数
  3 ZCOUNT key min max
  计算在有序集合中指定区间分数的成员数
  4 ZINCRBY key increment member
  有序集合中对指定成员的分数加上增量 increment
  5 ZINTERSTORE destination numkeys key [key …]
  计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
  6 ZLEXCOUNT key min max
  在有序集合中计算指定字典区间内成员数量
  7 ZRANGE key start stop [WITHSCORES]
  通过索引区间返回有序集合成指定区间内的成员
  8 ZRANGEBYLEX key min max [LIMIT offset count]
  通过字典区间返回有序集合的成员,有序集合中的分数必须相同,而且min和max前分别要加[]或者(),表示包含或者不包含,也可以用-和+表示得分最小值和最大值。其中LIMIT限制从指定区间的offset索引开始向后输出count个元素
  9 ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]
  通过分数返回有序集合指定区间内的成员
  10 ZRANK key member
  返回有序集合中指定成员的索引
  11 ZREM key member [member …]
  移除有序集合中的一个或多个成员
  12 ZREMRANGEBYLEX key min max
  移除有序集合中给定的字典区间的所有成员
  13 ZREMRANGEBYRANK key start stop
  移除有序集合中给定的排名区间的所有成员
  14 ZREMRANGEBYSCORE key min max
  移除有序集合中给定的分数区间的所有成员
  15 ZREVRANGE key start stop [WITHSCORES]
  返回有序集中指定区间内的成员,通过索引,分数从高到底
  16 ZREVRANGEBYSCORE key max min [WITHSCORES]
  返回有序集中指定分数区间内的成员,分数从高到低排序
  17 ZREVRANK key member
  返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
  18 ZSCORE key member
  返回有序集中,成员的分数值
  19 ZUNIONSTORE destination numkeys key [key …]
  计算给定的一个或多个有序集的并集,并存储在新的 key 中
  20 ZSCAN key cursor [MATCH pattern] [COUNT count]
  迭代有序集合中的元素(包括元素成员和元素分值)
  
  用法示例:
  
  image_1b6p3a6gm41q1lc910e120rad20.png-61.7kB
  
  image_1b6p476vo1bnhjb01teejhrnq2d.png-30.6kB

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值