redis相关的信息

Redis 缓存数据一致性的理解和方案

4个月前 (2020-04-03) 742 浏览 评论

数据库和缓存读写顺序?在了解缓存数据一致之前,我们需要先了解数据库和缓存的读写顺序。最经典的缓存+数据库读写的模式,就是 Cache Aside Pattern。命中:程序先从缓存中读取数据,如果命中,则直接返回失效:程序先从缓存中读取数据,如果没有命中,则从数据库中读取,成功之后将数据放到缓存中更新:程序先更新数据库,然后再删除缓存关于更新操作,其实问题比较多。通常疑惑的就几种:1、我们不考虑更新缓存的原因:首先,并发情况下也可能出现数据不是最新的情况。其次,不确定要更新的这个缓存项是否会被经

Redis 缓存需要了解和注意的问题

4个月前 (2020-04-03) 165 浏览 评论

Redis缓存想必大家都很熟悉,但是工作中可能使用到的地方都很片面,我们需要有个整体的认识。结合网上查询的和自己的理解,我们也具体总结下。什么是Redis?Redis是一个开源的底层使用C语言编写的key-value存储数据库。可用于缓存、事件发布订阅、高速队列等场景。而且支持丰富的数据类型:string(字符串)、hash(哈希)、list(列表)、set(无序集合)、zset(sorted set:有序集合)。为什么要使用Redis?高并发:单机缓存支持每秒QPS十几万,远远超过数据库;高性

Redis 并发竞争的理解和方案

4个月前 (2020-04-03) 145 浏览 评论

Redis的并发竞争问题,主要是发生在并发写竞争。例如:两个连接同时对price进行写操作,同时加10,最终结果我们知道,应该为30才是正确。考虑到一种情况:T1时刻,连接1将price读出,目标设置的数据为10+10 = 20。T2时刻,连接2也将数据读出,也是为10,目标设置为20。T3时刻,连接1将price设置为20。T4时刻,连接2也将price设置为20,则最终结果是一个错误值20。怎么解决?主要思路就是把并行读写改成串行读写的方式,从而来避免资源竞争。| 分布式锁我们使用

Redis 缓存穿透、缓存雪崩、缓存击穿的理解和解决方案

5个月前 (2020-02-18) 197 浏览 评论

今天被问到缓存的一些问题,缓存穿透、缓存雪崩、缓存击穿这些专属名词还真没了解过。后来了解了下,这些的确是我们必须考虑的,之前没有接触过的确是不应该的,好在赶紧了解下。总结情况如下:| 缓存流程正常的缓存流程一般是这样的:1、发起请求->缓存存在->返回正常数据->End2、发起请求->缓存不存在->数据库存在->更新缓存->返回正常数据->End3、发起请求->缓存不存在->数据库不存在->返回空->End正常的用

PHP 高并发下实现秒杀/抢购

1年前 (2018-09-13) 596 浏览 评论

    当我们接到一个秒杀或者抢购的功能时,通常我们需要考虑高并发下超抢(多人同时抢到)/超卖(库存扣为负数)的情况。这里简单说一下该功能的实现思路以及简单的代码示例。    在高并发下的超抢或超卖都是到达临界点时,多用户同时跨过我们的判断条件造成的,所以我们必须保证判断时操作的原子性。    这里我们通过redis的列表(list)来实现这个功能。  &n