Redis
soulh88
学生,别急,在学了在学了
展开
-
Redis五问(五)如何保证缓存和数据库数据一致性
然后B抢占到了资源 更新缓存的数据a = 2,此时线程A将数据更心动缓存 会产生a = 1的结果。让Redis订阅主数据库的binlog,这样即使从数据库没有即使同步到数据,线程B进来的读的时候也可以从Redis里读到A = 1。先把缓存删除了,那上面的例子,B进来想读缓存原来的数据发现没有,去数据库读到a = 2,此时线程A又将数据库数据改为a = 1。2.失效:程序从缓存中读取数据,如果没有命中,则从数据库读取,成功之后将数据放到缓存中。假如说更新数据库失败了,数据库要回滚,那缓存也要回滚吗?原创 2023-03-04 20:30:57 · 123 阅读 · 0 评论 -
Redis五问(四)性能优化
其中最主要的缺点就是它有一定的误判率,也就是说,当布隆过滤器判断一个元素不在集合中时,有一定的概率会出现误判,即认为该元素在集合中。当检查一个元素是否存在于集合中时,将该元素进行哈希处理,并查看对应的位是否被标记为 1,如果全部被标记为 1,则认为该元素可能存在于集合中,否则肯定不存在于集合中。此外,布隆过滤器的误判率非常低,也就是说,它的判断结果几乎总是正确的。将所有存在的key提前存入布隆过滤器,在访问缓存层之前,先通过过滤器拦截,若请求的是不存在的key,则直接返回空值。原创 2023-03-04 20:26:36 · 101 阅读 · 0 评论 -
Redis五问(三)持久化机制?
111原创 2023-03-04 20:25:53 · 39 阅读 · 0 评论 -
Redis五问(二)内存管理
把最新访问过的数据放在表头,即最近访问的key在表头,最少访问的key在表尾。给每个key维护一个时间戳,淘汰时随机采样5个key,从中淘汰调最旧的key,如果还是超出内存限制,则继续随机采样淘汰。volatile-ttl:在设置了过期时间的key中,选择剩余寿命(TTL)最短的key将其淘汰。volatile-lru:在设置了过期时间的key中,选择最少使用的key将其淘汰。allkeys-lru:在所有的key中,选择最少使用的key,将其淘汰。2.删除这20个key中已过期的key。原创 2023-03-04 20:26:35 · 82 阅读 · 0 评论 -
Redis五问(一)常用数据结构
5种基础数据结构:String, List, Set, Hash, Zset三种特殊数据结构:HyperLogLogs(基数统计),Bitmap(位存储),Geospatial(地理位置)5种基础数据结构底层依赖以下8种,简单动态字符串(SDS)、LinkedList(双向链表)、Hash Table(哈希表)、SkipList(跳跃表)、Intset(整数集合)、ZipList(压缩列表)、QuickList(快速列表)StringListSetHashZsetSDSLinkedList/ZipList/原创 2023-03-04 20:24:14 · 60 阅读 · 0 评论