redis总结

redis浅析

数据类型底层的数据类型可以存储的值可以进行的操作使用在哪些场景下面
StringSDS(后续讲解)字符串,整数,浮点数对字符串或者其中的一部分进行系类的操作处理使用最为频繁,一般就是用作简单的键值对的缓存处理作为key值1. 可以用于保存单个字符串或是JSON字符串类型。2. 因为string类型是二进制安全的所以可以把一个图片文件的内容 作为字符串来存储。3. 计算器进行使用时候,对微博数,粉丝数目进行增和减。4. increment 本身就具有原子操作的特性。
List压缩列表列表1. 从两端压入或者弹出元素。2. 对单个或者多个元素进行修建,只保留一个返回内的元素存储一些列表类型的数据结构。1. 消息队列 可以使用reids的lpush 与 brpop 来实现阻塞队列,保证负载均衡与高可用。2. 文章列表,每个用户都有数据自己的文章列表,需要分页展示文章列表,使用list 不但有序 还可以支持按照索引范围获取元素。最新消息排行等。
Setinsert无序不重复集合添加、获取、移除单个元素检查一个元素是否存在于集合中计算交集、并集、差集从集合里面随机获取元素1, 对于两个集合之间的数据进行交集,并集差集运算等。 2. 方便实现对于共同好友的采集,共同关注,二度好友等,对于以上说的集合操作,还可以使用不同的命令将结果返回给客户端或则是存放在一个新的集合里面。 3. 利用唯一性, 统计访问网站的所有独立IP信息。
Hash压缩列表键值对集合添加、获取、移除单个键值对获取所有键值对检查某个键是否存在1. 用于存储一个对象2. 存储用户用户的具体信息,年龄,生日等数据

缓存与数据库双写的数据一致性

场景描述解决方案
先写缓存,再写数据库,缓存写成功,数据库写失败缓存写成功,但写数据库失败或者响应延迟,则下次读取(并发读)缓存时,就出现脏读这个写缓存的方式,本身就是错误的,需要改为先写数据库,把旧缓存置为失效;读取数据的时候,如果缓存不存在,则读取数据库再写缓存
先写数据库,再写缓存,数据库写成功,缓存写失败写数据库成功,但写缓存失败,则下次读取(并发读)缓存时,则读不到数据缓存使用时,假如读缓存失败,先读数据库,再回写缓存的方式实现
需要缓存异步刷新指数据库操作和写缓存不在一个操作步骤中,比如在分布式场景下,无法做到同时写缓存或需要异步刷新(补救措施)时候确定哪些数据适合此类场景,根据经验值确定合理的数据不一致时间,用户数据刷新的时间间隔
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值