Redis数据类型简介

一)Redis数据类型简介

1、二进制安全字符串。

2、列表:根据插入顺序排序的字符串元素的集合。它们基本上是链表

3、哈希,是由与值关联的字段组成的映射。字段和值都是字符串。

4、集:唯一,未排序的字符串元素的集合。

5、排序集合,类似于集合,但是每个字符串元素都与一个称为score的浮点值相关联。

6、位数组(或简称为位图):可以使用特殊命令像位数组一样处理字符串值:您可以设置和清除单个位,计数所有设置为1的位,找到第一个设置或未设置的位,等等。

 

二)Redis键

Redis密钥是二进制安全的,所以可以使用任意二进制序列作为秘钥,但建议制定一些有意义的规则。

1、Redis键不要太长,因为在数据集中查找密钥可能需要进行一些代价高昂的密钥比较。

2、Redis键也不要太短,建议:项目+模块+业务+操作等方式命名。

3、Redis键允许的最大密钥大小为512MB。

 

三)Redis字符串

Redis字符串类型是Redis中最简单的值类型。

set命令: set key value,给一个字符串key设置对应的value

get命令: get key,获取key的value

备注:set方式设置value,当key的值不存在时,直接set,当value存在时,会直接替换掉key对应的value。

 

set key value nx:当key不存在时,直接set值,当key存在时,替换会失败,返回nil。

set key value xx:当key不存在时,返回nil,当key存在时,替换成功。

 

原子增量:INCR命令由一个解析字符串值作为一个整数,它的增量,并最终将获得的值作为新的值。

使用场景:如网站访客统计,资源下载人数统计,适合数量方面的统计操作。

 

mset命令:mset key value [key value ...],一次性设置多个key和value

mget命令:mget key [key ...],一次性获取多个key的value,返回一个数组

 

exists命令:exists key [key ...],查询某一个key是否存在,当key相同时,返回数量会大于1。

del命令:del key [key ...],删除一个key,当key存在时,返回1,当key不存在时,返回0。

 

type命令:type key,查看一个key在Redis中属于哪一种数据类型。

 

expire命令:expire key seconds,给key设置一个过期时间,并指定多少秒之后过期。

ttl命令:ttl key,查看key的过期时间

 

四)Redis列表

Redis列表是用链接列表实现的,因为对数据库而言,插入删除总比查找访问使用更频繁。

链表优点:插入删除快速,只需查找到对应节点,改变指针即可。

链表缺点:当数据量大时,查找访问速度可能会比较慢。

 

使用场景:

1、每次用户发布新照片时,我们都会使用LPUSH将其ID添加到列表中。

2、当用户访问主页时,我们LRANGE 0 9为了获取最新发布的10个项目。

 

rpush命令:rpush key value [value ...],在链表尾部插入元素,可以插入单个值,也可以一次性插入多个值。

lpush命令:lpush key value [value ...],在链表头部插入元素,可以插入单个值,也可以一次性插入多个值。

lrange命令:lrange key start stop,指定返回列表的区间数据,-1表示为末尾元素,-2表示倒数第二个元素。

 

lpop命令:lpop key,从链表头部弹出元素,并在列表删除该元素,当元素不存在时,返回nil。

rpop命令:rpop key,从链表尾部弹出元素,并在列表删除该元素,当元素不存在时,返回nil。

 

ltrim命令:ltrim key start stop,告诉Redis仅采用索引startstop的列表元素,其他所有内容都将被丢弃。

备注:当列表用lpop或rpop弹完出元素之后,列表会不存在。

 

五)Redis哈希

Redis哈希是一种key value存储的数据结构。

hset命令:hset key field value,给一个key设置field和value。

hget命令:hget key field,根据一个key的field获取对应的value。

 

hmset命令:hmset key field value [field value ...],一次性给多个key设置field和value。

hmget命令:hmget key field [field ...],根据多个key的field获取对应的value,返回一个数组。

 

六)集

Redis集是字符串的无序集合。

sadd命令:sadd key member [member ...],在集合中添加了三个元素,并告诉Redis返回所有元素。

 

sismember命令:sismember key member,检查某个member元素是否存在key的集合中。

 

sunionstore命令:sunionstore destination key [key ...],把多个集合关联起来,并将结果存储到另一个destination集合中。

spop命令:spop key [count],弹出指定key集合中一个随机元素,删除之后并将其返回到客户端。

scard命令:scard key,提供集合中元素的剩余数量。

 

七)Redis排序集

排序集是一种数据类型,类似于集合和哈希之间的混合。是一个有顺序的集合。

zadd命令:zadd key [NX|XX] [CH] [INCR] score member [score member ...],往集合中添加元素,并指定score得分,score为float数据类型。

 

zrange命令:zrange key start stop [WITHSCORES],顺序返回指定集合索引start到stop的元素。

 

zrevrange命令:zrevrange key start stop [WITHSCORES],顺序返回指定集合索引start到stop的元素。

 

zrangebyscore命令:zrangebyscore key min max [WITHSCORES] [LIMIT offset count],获取指定scores得分的元素。

zremrangebyscore命令:zremrangebyscore key min max,获取集合中指定范围元素个数。

 

八)位图

位图不是实际的数据类型,而是在String类型上定义的一组面向位的操作。由于字符串是二进制安全Blob,并且最大长度为512 MB,因此它们适合设置多达2 32个不同的位。

位图的最大优点之一是,它们在存储信息时通常可以节省大量空间。例如,在以增量用户ID表示不同用户的系统中,仅使用512 MB内存就可以记住40亿用户的一位信息(例如,知道用户是否要接收新闻通讯)。

 

setbit命令:setbit key offset value

getbit命令:getbit key offset

 

所述SETBIT命令采用作为第一个参数的比特数,和作为第二个参数的值以设置所述位,其为1或0的命令自动放大字符串,如果寻址位是当前字符串长度之外。

GETBIT只是返回指定索引处的位的值。超出范围的位(寻址超出存储在目标键中的字符串长度的位)始终被视为零。

在位组上有三个命令:

  1. BITOP在不同的字符串之间执行按位运算。提供的运算为AND,OR,XOR和NOT。
  2. BITCOUNT执行填充计数,报告设置为1的位数。
  3. BITOPS查找指定值为0或1的第一位。

 

识别二维码关注个人微信公众号

本章完结,待续,欢迎转载!
 
本文说明:该文章属于原创,如需转载,请标明文章转载来源!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值