【Redis】Redis学习笔记(二)Redis数据类型

  Redis是一个键值对内存数据库(可持久化),一般存储生命周期为开启关闭一个实例的时间,其中的数据都存储在同一个数据库下,以键值对的形式存储起来,键可以理解为定义一条数据的标签,通过该标签来访问和寻找数据,Redis键命令用于管理redis的键,常见的命令有:

表1 常见的Redis keys命令

命令作用
DEL key该命令用于在key存在时删除key
EXISTS key检查给定key是否存在
EXPIRE key seconds为给定key设置过期时间
KEYS pattern查找所有符合给定模式(pattern)的 key
RENAME key newkey修改key的名称
TYPE key返回key所储存的值的类型

更多命令请参考:https://redis.io/commands

1 字符串类型

  字符串类型是Redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据,一个字符串类型键允许存储的数据的最大容量是512MB,字符串类型是其它4种数据类型的基础,其它数据类型和字符串类型的差别从某种角度来说只是组织字符串的形式不同。

这里写图片描述

图1 字符串类型结构图

表2 常见的Redis 字符串命令

命令作用
SET key value设置指定key的值
GET key获取指定key的值
GETRANGE key start end返回key中字符串值的子字符
GETSET key value将给定key的值设为value,并返回key的旧值
MGET key1 [key2..]获取所有(一个或多个)给定key的值
MSET key value [key value …]同时设置一个或多个key-value对
INCR key将key中储存的数字值增一
INCRBY key increment将key所储存的值加上给定的增量值(increment)
INCRBYFLOAT key increment将key所储存的值加上给定的浮点增量值(increment)
DECR key将key中储存的数字值减一
DECRBY key decrementkey所储存的值减去给定的减量值(decrement)
APPEND key value如果key已经存在并且是一个字符串,APPEND命令将指定的value追加到该key原来值的末尾
GETBIT key offset对key所储存的字符串值,获取指定偏移量上的位(bit)
SETBIT key offset value对key所储存的字符串值,设置或清除指定偏移量上的位(bit)
STRLEN key返回key所储存的字符串值的长度

更多命令请参考:https://redis.io/commands

2 散列类型

  散列类型的键也是一种字典结构,其存储了字段和字段值的映射,但字段值只能是字符串,不支持其它数据类型,散列类型适合存储对象,使用对象类别或ID构成键名,使用字段表示对象的属性,而字段值则存储属性值。存储结构如下所示:

Hash

图2 散列类型结构图

表2 常见的Redis 散列命令

命令作用
HDEL key field1 [field2]删除一个或多个哈希表字段
HEXISTS key field查看哈希表key中,指定的字段是否存在
HGET key field获取存储在哈希表中指定字段的值
HGETALL key获取在哈希表中指定key的所有字段和值
HINCRBY key field increment为哈希表key中的指定字段的整数值加上增量(increment)
HINCRBYFLOAT key field increment为哈希表key中的指定字段的浮点数值加上增量(increment)
HKEYS key获取所有哈希表中的字段
HLEN key获取哈希表中字段的数量
HMGET key field1 [field2]获取所有给定字段的值
HMSET key field1 value1 [field2 value2 ]同时将多个field-value(域-值)对设置到哈希表key中
HSET key field value将哈希表key中的字段field的值设为value
HSETNX key field value只有在字段field不存在时,设置哈希表字段的值
HVALS key获取哈希表中所有值
HSCAN key cursor [MATCH pattern] [COUNT count]迭代哈希表中的键值对

更多命令请参考:https://redis.io/commands

3 列表类型

  列表类型可以存储一个有序的字符串序列,常用的操作是向列表两端添加元素或者是或得列表的某一个片段,其内部是使用双向链表实现的,可以方便的获得两端的数据,但是访问中间数据速度较慢。

List

图3 列表类型结构图

表3 常见的Redis 列表命令

命令作用
LLEN key获取列表长度
LPUSH key value1 [value2]将一个或多个值插入到列表头部
RPUSH key value1 [value2]将一个或多个值插入到列表尾部
LPOP key移出并获取列表的第一个元素
RPOP key移除并获取列表最后一个元素
LINDEX key index通过索引获取列表中的元素
LINSERT key BEFORE|AFTER pivot value在列表的元素前或者后插入元素
LPUSHX key value将一个值插入到已存在的列表头部
LRANGE key start stop获取列表指定范围内的元素
LREM key count value移除列表元素
LSET key index value通过索引设置列表元素的值
LTRIM key start stop对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除

更多命令请参考:https://redis.io/commands

4 集合类型

  集合类型是不具有有序性,但是其中元素具有唯一性,常用操作是向集合中加入或删除元素、判断某个元素是否存在等,集合元素在Redis内部是使用值为空的散列表实现的,所以这些操作的时间复杂度都是O(1),最方便的是多个集合类型键之间还可以进行并集、交集和差集运算。

Set

图4 集合类型结构图

表4 常见的Redis 集合命令

命令作用
SADD key member1 [member2]向集合添加一个或多个成员
SREM key member1 [member2]移除集合中一个或多个成员
SPOP key移除并返回集合中的一个随机元素
SISMEMBER key member判断member元素是否是集合key的成员
SMEMBERS key返回集合中的所有成员
SCARD key获取集合的成员数
SDIFF key1 [key2]返回给定所有集合的差集
SDIFFSTORE destination key1 [key2]返回给定所有集合的差集并存储在destination中
SINTER key1 [key2]返回给定所有集合的交集
SINTERSTORE destination key1 [key2]返回给定所有集合的交集并存储在destination中
SUNION key1 [key2]返回所有给定集合的并集
SUNIONSTORE destination key1 [key2]所有给定集合的并集存储在destination集合中
SSCAN key cursor [MATCH pattern] [COUNT count]迭代集合中的元素

更多命令请参考:https://redis.io/commands

5 有序集合类型

  有序集合类型为集合中的每个元素都关联了一个分数,可以通过分数实现集合元素的排序。

ZSet

图5 有序集合类型结构图

表5 常见的Redis 有序集合命令

命令作用
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]迭代有序集合中的元素(包括元素成员和元素分值)

更多命令请参考:https://redis.io/commands

注意:列表类型和有序集合类型的区别

  • 列表类型是通过链表实现的,获取靠近两端的数据速度极快,而当元素增多后,访问中间元素的速度回较慢
  • 有序集合类型是使用散列表和跳跃表实现的,所以即使读取位于中间部分的数据速度也很快
  • 列表中不能简单地调整某个元素的位置,但是有序集合可以
  • 有序集合要比列表类型更耗费内存
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值