-
Caffeine-03-过期策略 淘汰算法 FIFO/LRU/LFU/TinyLFU 算法
1、FIFO(先进先出)算法
FIFO是类似队列的算法,如果空间满了需要加入新数据先进入缓存的数据会被优先被淘汰。
淘汰过程:
优点:最简单,最公平的一种数据淘汰算法,逻辑简单,易于实现。
缺点:缓存命中率低。
2、LRU(最近最久未使用)算法
如果空间用尽需要加入新数据会优先淘汰最久未被访问(访问少的在未来被访问的概率也是最低的)的数据。
LRU是以时间先后顺序来衡量要淘...
2018-09-09 23:44:19 |
Cache
-
Caffeine-02-详细介绍+整合 springboot
介绍
Caffeine 是一个基于Java 8的高性能本地缓存框架,采用了W-TinyLFU(LUR和LFU的优点结合)算法,实现了缓存高命中率、内存低消耗。
缓存性能接近理论最优,属于是Guava Cache的增强版。
在并发读、并发写、并发读写三个场景下Caffeine的性能最优。
特性
Caffeine 提供灵活的结构来创建缓存,并且有以下特性:
自动加...
2018-09-09 23:44:19 |
Cache
-
Lua-01-overview Lua 入门教程
Lua
Lua 是一种强大、高效、轻量级、可嵌入的脚本语言。
它支持过程编程、面向对象编程、函数编程、数据驱动编程和数据描述。
Lua 结合了简单的过程语法和基于关联数组和可扩展语义的强大数据描述结构。
Lua是动态类型化的,通过使用基于寄存器的虚拟机解释字节码来运行,并且具有带有增量垃圾收集的自动内存管理功能,使其成为配置、脚本编制和快速原型的理想工具。
快速开始
环境
...
2018-09-09 02:38:06 |
Lang
-
redis-45-redis multi io 多路复用
Blocking I/O
先来看一下传统的阻塞 I/O 模型到底是如何工作的:
当使用 read 或者 write 对某一个文件描述符(File Descriptor 以下简称 FD)进行读写时,如果当前 FD 不可读或不可写,整个 Redis 服务就不会对其它的操作作出响应,导致整个服务不可用。
这也就是传统意义上的,也就是我们在编程中使用最多的阻塞模型:
阻塞模型虽然开发中非...
2018-09-08 03:07:16 |
Distributed
-
redis-44-redis migrate tool redis 迁移工具
redis-migrate-tool
redis-migrate-tool is a convenient and useful tool for migrating data between redis.
特点:
快速。
多线程。
基于redis复制。
实时迁移。
迁移过程中,源集群不影响...
2018-09-08 03:07:16 |
Distributed
-
和 chatgpt 聊了一会儿分布式锁 redis/zookeeper distributed lock
前言
最近的 chatGPT 很火爆,听说取代程序员指日可待。
于是和 TA 聊了一会儿分布式锁,我的感受是,超过大部分程序员的水平。
Q1: 谈一谈 java 通过 redis 实现分布式 锁
chatGPT:
Java通过Redis实现分布式锁,是在多个Java应用程序之间实现同步的一种方式。通过Redis的原子性和高性能,实现了分布式锁的可靠性和高效性。
具体实现步骤如...
2018-09-08 03:07:16 |
Distributed
-
java 从零实现 redis 分布式锁
点赞再看,已成习惯。
为什么需要分布式锁
在 jdk 中为我们提供了加锁的方式:
(1)synchronized 关键字
(2)volatile + CAS 实现的乐观锁
(3)ReadWriteLock 读写锁
(4)ReenTrantLock 可重入锁
等等,这些锁为我们变成提供极大的便利性,保证在多线程的情况下,保证线程安全。
但是在分布式系统中,上面的锁就...
2018-09-08 03:07:16 |
Distributed
-
Redis 分布式锁 redis lock
为什么需要分布式锁
在 jdk 中为我们提供了加锁的方式:
(1)synchronized 关键字
(2)volatile + CAS 实现的乐观锁
(3)ReadWriteLock 读写锁
(4)ReenTrantLock 可重入锁
等等,这些锁为我们变成提供极大的便利性,保证在多线程的情况下,保证线程安全。
但是在分布式系统中,上面的锁就统统没用了。
我们想要解决分布式系...
2018-09-08 03:07:16 |
Distributed