一)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仅采用索引start到stop的列表元素,其他所有内容都将被丢弃。
备注:当列表用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只是返回指定索引处的位的值。超出范围的位(寻址超出存储在目标键中的字符串长度的位)始终被视为零。
在位组上有三个命令:
- BITOP在不同的字符串之间执行按位运算。提供的运算为AND,OR,XOR和NOT。
- BITCOUNT执行填充计数,报告设置为1的位数。
- BITOPS查找指定值为0或1的第一位。
识别二维码关注个人微信公众号
本章完结,待续,欢迎转载!
本文说明:该文章属于原创,如需转载,请标明文章转载来源!