Redis数据类型

简介

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

Redis 与其他 key - value 缓存产品有以下三个特点:

Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
Redis支持数据的备份,即master-slave模式的数据备份。

数据结构

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

字符串(String)

string是redis最基本的类型,也是二进制安全的。string的一个键最大能存储512MB。
string的字符串对象的编码为int、raw或embstr:

  1. int:保存的是可以用long类型表示的整数值。
  2. raw:保存长度大于44字节的字符串(redis3.2之前是39字节,之后为44字节)
  3. embstr:保存长度小于44字节的字符串(redis3.2之前是39字节,之后为44字节)

  注:embstr是针对短字符串的优化编码。embstr的好处在于创建时少分配一次空间,删除时少释放一次空间,对象的所有数据连接在一起,查询方便。而embstr的坏处也很明显,如果字符串的长度增加需要重新分配内存,所以embstr实现为只读。在int的保存的值超过了long的范围时,自动转化为raw。如果对embstr做修改时,先将embstr转换为raw,再做修改,修改后的对象也为raw(不关乎字符串的长度)

相关命令:

序号命令及描述例子
1SET key value
设置指定key的值
在这里插入图片描述
2GET key
获取指定key的值
在这里插入图片描述
3GETRANGE key start end
返回key中字符串值的子字符串(start到end)
在这里插入图片描述
4GETSET key value
修改key所对应的值,并返回key之前的值
在这里插入图片描述
5INCR key
对应的value自增1,如果没有key值,自动给你创建,并且复制为1。
自增的value是可以转成数字的
在这里插入图片描述
6DECR key
对应的value自减1
注:自减是可以转成数字的
在这里插入图片描述

哈希(hash)

hash是一个string类型的field和value的映射表,hash特别是和用于存储对象。每个hash可以存储 232 - 1 键值对(40多亿)。
相关命令:

序号命令及描述例子
1HSET key field
将哈希表key中的字段field设置为value,如果key和field都已存在,则覆盖之前field的value。
在这里插入图片描述
2HMSET key field1 value1 [field2 value2]
同时将多个field-value对设置到哈希表key中,同样拥有覆盖功能。
在这里插入图片描述
3HSETNX key field value 只有在字段不存在时,设置哈希表字段的值,不能对已有值进行覆盖。在这里插入图片描述
4HGET key field
获取到存储在哈希表中指定字段(field)的值。
在这里插入图片描述
5HGETALL key
获取在哈希表中指定key的所有字段和值。
在这里插入图片描述
6HEXISTS key field
查看哈希表key中,指定的字段是否存在。
在这里插入图片描述

列表(List)

Redis列表是简单的字符串列表,按照插入顺序排序。可以在列表的头部和尾部进行添加数据。一个列表最多包含232 - 1个元素
相关命令:

序号命令及描述例子
1LPUSH/RPUSH key value1[value2]
将一个或多个值从头部/尾部插入到队列中。
在这里插入图片描述
2LPOP/RPOP key
从列表头部/尾部移除一个元素,返回值为移除元素。
在这里插入图片描述
3LRANGE KEY_NAME START END
返回列表指定区间内的元素。0代表第一个元素,-1代表最后一个元素
在这里插入图片描述
4BLPOP/BRPOP LIST1 LIST2… LISTN TIMEOUT
移除并获取列表的第一个元素/最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出为止。
在这里插入图片描述
5LLEN KEY
获取列表长度
在这里插入图片描述
6LREM key count value
移除列表元素。count的值有以下几种:
count > 0:从表头开始向表尾搜索,移除与value相等的元素,数量为count。
count < 0:从表尾开始向表头搜索,移除与value相等的元素,数量为count的绝对值。
count = 0:移除表中所有与value相等的值。
在这里插入图片描述

集合(Set)

Set是String类型的无序集合,且集合成员是唯一的,无重复值。Set是通过哈希表来实现的,所以对set的操作复杂度都是O(1)。
集合中最大的成员数为232 - 1
相关命令:

序号命令及描述例子
1SADD key member1 [member2]
向几何中添加一个或多个成员。无法添加相同元素。
在这里插入图片描述
2SMEMBERS key
返回集合中所有的成员。
在这里插入图片描述
3SCARD key
返回集合中元素的数量。
在这里插入图片描述
4SISMEMBER key value
判断key中是否存在value值。
在这里插入图片描述
5SREM key member1 …membern
移除集合key中一个或多个元素。当member没有时,不会保存,而是忽略掉。
在这里插入图片描述
6SRANDMEMBER key [count]
返回集合key中的一个随机元素,其中count参数可以规定返回数量:
count为正数时,当count小于集合基数,返回一个count个数的数组;当count大于集合基数时,返回整个数组。
count为负数,返回一个长度为count绝对值的可能会出现重复值的数组。
在这里插入图片描述
7SMOVE source destination member
将指定member元素从source集合移动到destination集合中。
若destination集合中有member元素,则只将元素从source移除
在这里插入图片描述

有序集合(sorted set)

有序集合只是在集合上为每个元素关联了一个double类型的分数,集合通过分数来排序,分数的数值是可以重复。
有序集合中最大的成员数为为232 - 1。
相关命令:

序号命令及描述例子
1ZADD key score1 value1…scoren valuen
可以将一个或多个成员元素及其分数数值加入到有序集合中。
如果成员已存在则更新该成员的数值。
在这里插入图片描述
2ZCARD key
返回指定key集合中的元素数量。
在这里插入图片描述
3ZINCRBY key increment member
对指定的成员分数加上增量,其中增量可以为负值,让分数减小。
==注:==当指定的key不存在时,该命令和ZADD命令是一样的。
在这里插入图片描述
4ZRANGE key start stop [WITHSCORES]
返回有序集合key,其中start和stop的数值为0表示第一个成员,为-1表示最后一个成员以此类推即可。WIRHSCORES的选项是选择但会显示中是否显示成员对应的分数数值。
在这里插入图片描述
5ZRANK key member
返回集合中指定成员的排名。
在这里插入图片描述
6ZSCORE key member
返回有序集中指定成员的分数值。
在这里插入图片描述
7ZUNIONSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATESUM]
计算给定的一个或多个集合的并集,其中numkeys限定集合个数,并将结果存储到destination的集合中
。命令中的WIEIGHTS选项可以将每个集合中每个元素的分数做相应的乘法运算。
命令中的AGGREGATE选项,可以指定并集的聚合方式,默认值为sum,即相同元素的分值将会相加,存储在并集的结合中,而max或min,则是存储每个元素的最大或最小值。
在这里插入图片描述 在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值