redis基础

2021-03-18  本文已影响0人  Mr_Editor

redis

value数据类型

redis 是key-value 类型的内存缓存 key的数据类型是String
value 是二进制安全的,可以理解为数据存储为二进制文件,在展示时和客户端的编码相关。

String byte

List

Hash

Set

无序 随机性
放入的多少不同,元素存储的顺序不同去重

- SPOP

  取出1个

Sorted_set

发布订阅(Pub/Sub)

应用场景,聊天室
聊天室数据分为实时和历史数据
实时数据可以通过发布订阅功能
历史数据,假如是近期的数据,如3天之内,用sorted_set
更老的数据需要持久化到数据库中

SUB CHANNEL

PUB CHANNEL CONTENT

管道pipeline

一次性执行多条redis指令

布隆过滤器

bloom概率解决问题
不可能百分之百阻挡
1,你有啥

  1. 通过多个映射函数向bitmap中标记
  2. 请求的可能被错误标记
  3. 但是,一定概率会大量较少放行:穿透
    5.而且成本低

元素——》n个映射函数——》bitmap
判断元素是否存在,通过映射函数,比对bitmap相应位置是否为1

映射函数

bitmap

还有布谷鸟过滤器

实现的三种形式

持久化机制

修改配置文件实现

RDB快照

AOF (Append Only File)

redis的写操作记录到文件中

作为缓存/数据库

缓存

- 业务运转驱动

  机器内存是有限的,随着访问的变化,应该淘汰掉冷数据
  LFU策略:碰了多少次
  LRU策略: 多久没碰
- 主动方式

  当key超过过期事件后,并不会立即删除key,只会对过期的key执行del、set、getset时才会清除,也就意味着所有对改变key的值的操作都会触发删除动作,当client尝试访问它时,key会被发现并主动的过期
  

- 被动方式

  只靠主动方式是不够的,因为有些过期的keys,永远不会访问他们,那就永远不会过期,所以redis提供了被动方式,被动方式会定时检测过期的key,然后删除:
  每隔100ms 随机抽取20个key进行过期检测
  删除20个key中所有已过期的key
  如果过期key的比例大于25%,重复步骤1
  被动方式采用一种概率算法,对key进行随机抽样,这样就意味着,在任何给定的时刻,最多会清除1/4的过期key。
  牺牲一些内存,保证redis性能为王。

事务

MULTI/EXEC/DISCARD

WATCH

有点类似于volitale的味道

两种错误情况

事务不回滚

Redis 命令只会因为错误的语法而失败(并且这些问题不能在入队时发现),或是命令用在了错误类型的键上面:这也就是说,从实用性的角度来说,失败的命令是由编程错误造成的,而这些错误应该在开发的过程中被发现,而不应该出现在生产环境中。
因为不需要对回滚进行支持,所以 Redis 的内部可以保持简单且快速。

XMind - Trial Version

上一篇 下一篇

猜你喜欢

热点阅读