一文掌握系列之Redis五种基础数据类型

Redis在工作的应用场景比较多,
比如用于存放有时限的数据,存放对象数据,统计访客数据等,
笔者整理了Redis的五种类型的基本操作命令,
这些命令也直接对应到相应的API,
希望能帮助大家快速掌握Redis。

字符类型String

字符串或者是数值,可以设置其过期时间。

命令作用
set key value添加一个key
get key查询信息,如果不存在的话返回nil
del key删除(删除成功返回1,删除失败返回0)
mset key1 value1 key2 value2存储多个数据
mget key1 key2获取多个值
strlen key返回字符串长度
append key 追加的内容给key追加值,如果不存在直接新建key
incr key让字符数值增加1,例如2变为3,返回值是value
decr key让字符数值减少1,例如3变为2,返回值是value
incrby key num让value值增加num(num为整数),返回值是value
decrby key num让value值减少num,返回值是value
incrbyfloat key num让value值增加num(num为小数),返回值是value
decrbyfloat key num让value值减少num(num为小数),返回值是value
setex key seconds value让一个值存在多少秒数,时间到了就没了
psetex key milliseconds value让一个值存在多少毫秒

PS:

①使用数值操作,如果不能转换为数字或者范围超出将报错。其最大值范围-9223372036854775808到9,223,372,036,854,775,807,即是-2的63次方到2的63次方-1

②string的最大数据是512MB

哈希hash

hash可被认为是key的值是一个字典,通过指定key field才能找到具体的值。
在这里插入图片描述

命令作用
hset key field vaue给key新增一个field其值为value
hget key field获取key值中field的值
hgetall key获取key中所有东西
hdel key field1 field2删除key中的field1….
hlen keykey有的field数量
hexists key field查看key中是否存在field
hkeys key查看key下的所有field
hvals key查看key下的所有value
hincrby key filed num让key中的filed增加num
hincrbyfloat key filed num让key中的filed增加num(小数)
hmset key field1 value1 …设置多个值
hdel key field删除key中field
hsetnx key field value如果存在不变,如果不存在添加

PS:

​ ①value中只能是字符串/数值类型。

​ ②hash中的存储类似于对象,但是不能滥用。

​ ③hash不能设置过期时间。

列表list

存储多个数据,底层使用的数据结构为双向列表。使用的插入方法是头插法。

例如:如图,从左遍历是b a ,插入c ,因为是头插,所以成了cba (从左边遍历)
在这里插入图片描述

命令作用
lpush key value1 value2左插入list
rpush key value1 value2将数据右插入list
lrange key start end查看start到end的元素(end可以为负数,但是start不能为负数)
lindex key index查看位置为index的元素
llen key查看key的长度
lpop key获取并且移除左边的数据
rpop key获取并且移除右边的数据
blpop key time在一定时间内左边取出数据且移除
brpop key time在一定时间内右边取出数据且移除
lrem key n value移除列表里的值value,并且移除n个value

集合set

​ 存储大量数据,提供高效率查询,数据不允许重复。可以用于去重 。

命令作用
sadd key value1 value2增加元素
smembers key查看key中所有元素
srem key value移除某个元素
scard key获取集合元素的总数量
sismembers key member查看member是否在集合中
srandmember key count随机取集合中的一个值,不在元素中删除
spop kye随机获取集合中的某个数据且移除
sinter set1 set2…求交集
sunion set1 set2….求并集
sdiff set1 set2求差集
sinterstore set1 set2 set3将set2与set3的交集存到set1中
sunionstore set1 set2 set3将set2与set3的并集存到set1中
sdiffstore set1 set2 set3将set2与set3的差集存到set1中
smove set1 set2 member将set1中的member移到set2中,s1中会去除

排序集合 sorted_set

​ key member score,某个班级里某个同学有一个分数,通过分数排名。

命令作用
zadd key score member score1 member1添加数据
zrange key start stop (withscores)从start看到stop,选择是否看到score(由小到大排的),不使用withscore返回的menber的值 使用withscores返回的数据为member1 score1 member2 score1 2
zrevrange key start stop (withscores)从start看到stop,选择是否看到score(由大到小排的)
zrem key member移除数据
zrangebyscore key min max (withscores limit start end)查看min到max之间的数据,可以使用limit限制数量。从小到大。
zrevrangebyscore key max min (withscores limit start end)查看min到max之间的数据,可以使用limit限制数量, 从大到小。
zremrangebyrank key start stop按索引删除,start到stop的都删除(两端的都删除)
zremrangebyscore key min max按score删除,删除从min到max的数据
zcard key查看多少数据
zconut key min max查看范围在min到max中的数据总数
zinterstore st1 num st2 st3 st4 (ZINTERSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX)交集,指定num个st(后面写的数量需与num一致),将这些个集合里都公共的东西的score加起来,然后存在st1中,还可以求平均最大最小,以及设置权重。
zunionstore st1 num st2 st3 st4并集,指定num个st(后面写的数量需与num一致),将这些个集合里都公共的东西的score加起来,然后存在st1中,还可以求平均最大最小,以及设置权重。
zrank key member查看member的索引,从小到大
zrevrank key member查看member的索引,从大到小
zscore key member查看member的score
zincrby key num member将key中的member加num

PS:

①如果score使用整数,其范围是2的64位。

②score为小数的时候,是双精度的double类型,进行加减的时候会造成精度丢失等。

精度问题参考:

https://blog.csdn.net/qq_27215113/article/details/100663914

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值