美文网首页
[Redis] 二、string类型&bitmap、list、s

[Redis] 二、string类型&bitmap、list、s

作者: 每皮1024 | 来源:发表于2021-02-28 22:04 被阅读0次

常见命令

help @list:可以查看list类型的所有命令

常见问题

sorted set的排序是怎么实现的增删改查的速度?

skiplist(跳跃表:牺牲存储空间来减少查询速度)

  • 增的过程最重要
  • 改就是删掉,然后再加进去
image.png

Redis的kv结构

key中有:key名、type类型(避免到value再算抛异常)、encoding(不用拓宽到字节)

String类型

字符串、数值、bitmap

数值的incr:抢购、秒杀、详情页、点赞、评论规避并发下,对数据库的事务操作,完全由redis内存操作代替

二进制安全

strlen总会是字节长度,底层存储都是字节存储,只是有一个encoding做维护(可以让一些方法,例如incr变得更快)

只有字节流,只要双方客户端有统一编解码,数据就不会被破坏(因为不同语言对整形的宽度理解不一样,可能造成截断溢出)

就像多语言开发,倾向于于json或者xml,而不是序列化

所以:使用Redis时,需要在用户端沟通好编码,因为Redis是没有数据类型的

细腻的操作

GETSET:虽然可以程序员自己可以get后set,但是GETSET可以减少一次IO

msetnx:原子性,假设一个不成功,整个都不能成功

bitmap

  1. 需求一:有用户系统,统计用户登录天数,且窗口随机

用户名是key 日期是value

setbit name 1 1
setbit name 7 1
setbit name 364 1
BITCOUNT name -2 -1 # 查看最后16天的登录情况
占用 46B*10000000 = 46000 0000 B 一共400M,统计全年所有用户登录情况
  1. 电商活动,登录就送礼物(一个人只有一件)。大库备货多少礼物,假设有2亿用户?

日期是key 用户是value

用户分:冷热用户(统计这个活跃用户),僵尸用户

setbit 20190101 1 1
setbit 20190102 1 1
setbit 20190102 7 1
bitop or destkey 20190101 20190102
BITCOUNT destkey 0 -1

list

  • 栈 同向命令
  • 队列 反向命令
  • 数组
  • 阻塞,单播队列(消息只能被一个消费者消费):blpop

set

hash

sorted set

db-engines.com

文档、图、时序、关系、键值、列式、搜索引擎

image.png

相关文章

网友评论

      本文标题:[Redis] 二、string类型&bitmap、list、s

      本文链接:https://www.haomeiwen.com/subject/nmbnfltx.html